You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ve...@apache.org on 2009/06/14 17:02:32 UTC

svn commit: r784570 - in /webservices/commons/trunk/modules/transport/modules: base/src/main/java/org/apache/axis2/transport/base/ base/src/main/java/org/apache/axis2/transport/base/datagram/ jms/src/main/java/org/apache/axis2/transport/jms/ mail/src/m...

Author: veithen
Date: Sun Jun 14 15:02:31 2009
New Revision: 784570

URL: http://svn.apache.org/viewvc?rev=784570&view=rev
Log:
Refactoring so that the logic that AbstractPollingTransportListener and the other AbstractTransportListener implementations have in common is moved to a single base class.

Modified:
    webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollTableEntry.java
    webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java
    webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListenerEx.java
    webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/ProtocolEndpoint.java
    webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/AbstractDatagramTransportListener.java
    webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/DatagramEndpoint.java
    webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSEndpoint.java
    webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java
    webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java
    webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/PollTableEntry.java
    webservices/commons/trunk/modules/transport/modules/udp/src/main/java/org/apache/axis2/transport/udp/Endpoint.java
    webservices/commons/trunk/modules/transport/modules/udp/src/main/java/org/apache/axis2/transport/udp/UDPListener.java

Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollTableEntry.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollTableEntry.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollTableEntry.java (original)
+++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollTableEntry.java Sun Jun 14 15:02:31 2009
@@ -21,7 +21,15 @@
 
 import java.util.TimerTask;
 
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.ParameterInclude;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 public abstract class AbstractPollTableEntry extends ProtocolEndpoint {
+    private static final Log log = LogFactory.getLog(AbstractPollTableEntry.class);
+    
     // status of last scan
     public static final int SUCCSESSFUL = 0;
     public static final int WITH_ERRORS = 1;
@@ -82,4 +90,27 @@
     public void setConcurrentPollingAllowed(boolean concurrentPollingAllowed) {
         this.concurrentPollingAllowed = concurrentPollingAllowed;
     }
+
+    @Override
+    public boolean loadConfiguration(ParameterInclude params) throws AxisFault {
+        Parameter param = params.getParameter(BaseConstants.TRANSPORT_POLL_INTERVAL);
+        pollInterval = BaseConstants.DEFAULT_POLL_INTERVAL;
+        if (param != null && param.getValue() instanceof String) {
+            String s = (String)param.getValue();
+            int multiplier;
+            if (s.endsWith("ms")) {
+                s = s.substring(0, s.length()-2);
+                multiplier = 1;
+            } else {
+                multiplier = 1000;
+            }
+            try {
+                pollInterval = Integer.parseInt(s) * multiplier;
+            } catch (NumberFormatException e) {
+                log.error("Invalid poll interval : " + param.getValue() + ",  default to : "
+                        + (BaseConstants.DEFAULT_POLL_INTERVAL / 1000) + "sec", e);
+            }
+        }
+        return true;
+    }
 }

Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java (original)
+++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractPollingTransportListener.java Sun Jun 14 15:02:31 2009
@@ -18,11 +18,7 @@
 */
 package org.apache.axis2.transport.base;
 
-import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.description.AxisService;
-import org.apache.axis2.description.Parameter;
-import org.apache.axis2.description.ParameterInclude;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.AxisFault;
 
@@ -32,12 +28,12 @@
 import java.util.Timer;
 
 public abstract class AbstractPollingTransportListener<T extends AbstractPollTableEntry>
-        extends AbstractTransportListener {
+        extends AbstractTransportListenerEx<T> {
 
     /** The main timer. */
     private Timer timer;
     /** Keep the list of endpoints and poll durations */
-    private final List<T> pollTable = new ArrayList<T>();
+    private final List<T> endpoints = new ArrayList<T>();
 
     @Override
     public void init(ConfigurationContext cfgCtx,
@@ -45,29 +41,10 @@
 
         timer = new Timer("PollTimer");
         super.init(cfgCtx, transportIn);
-        T entry = createPollTableEntry(transportIn);
-        if (entry != null) {
-            entry.setPollInterval(getPollInterval(transportIn));
-            schedulePoll(entry);
-            pollTable.add(entry);
-        }
     }
 
     @Override
     public void destroy() {
-        // Explicitly cancel all polls not predispatched to services. All other polls will
-        // be canceled by stopListeningForService. Pay attention to the fact the cancelPoll
-        // modifies pollTable.
-        List<T> entriesToCancel = new ArrayList<T>();
-        for (T entry : pollTable) {
-            if (entry.getService() == null) {
-                entriesToCancel.add(entry);
-            }
-        }
-        for (T entry : entriesToCancel) {
-            cancelPoll(entry);
-        }
-        
         super.destroy();
         timer.cancel();
         timer = null;
@@ -110,12 +87,17 @@
         }
     }
 
-    private void cancelPoll(T entry) {
-        synchronized (entry) {
-            entry.timerTask.cancel();
-            entry.canceled = true;
+    @Override
+    protected void startEndpoint(T endpoint) throws AxisFault {
+        schedulePoll(endpoint);
+    }
+
+    @Override
+    protected void stopEndpoint(T endpoint) {
+        synchronized (endpoint) {
+            endpoint.timerTask.cancel();
+            endpoint.canceled = true;
         }
-        pollTable.remove(entry);
     }
 
     protected abstract void poll(T entry);
@@ -149,86 +131,6 @@
         onPollCompletion(entry);
     }
 
-    private long getPollInterval(ParameterInclude params) {
-        Parameter param = params.getParameter(BaseConstants.TRANSPORT_POLL_INTERVAL);
-        long pollInterval = BaseConstants.DEFAULT_POLL_INTERVAL;
-        if (param != null && param.getValue() instanceof String) {
-            String s = (String)param.getValue();
-            int multiplier;
-            if (s.endsWith("ms")) {
-                s = s.substring(0, s.length()-2);
-                multiplier = 1;
-            } else {
-                multiplier = 1000;
-            }
-            try {
-                pollInterval = Integer.parseInt(s) * multiplier;
-            } catch (NumberFormatException e) {
-                log.error("Invalid poll interval : " + param.getValue() + ",  default to : "
-                        + (BaseConstants.DEFAULT_POLL_INTERVAL / 1000) + "sec", e);
-            }
-        }
-        return pollInterval;
-    }
-    
-    @Override
-    protected void startListeningForService(AxisService service) throws AxisFault {
-        T entry = createPollTableEntry(service);
-        if (entry == null) {
-            throw new AxisFault("The service has no configuration for the transport");
-        }
-        entry.setService(service);
-        entry.setPollInterval(getPollInterval(service));
-        schedulePoll(entry);
-        pollTable.add(entry);
-    }
-    
-    /**
-     * Create a poll table entry based on the provided parameters.
-     * If no relevant parameters are found, the implementation should
-     * return null. An exception should only be thrown if there is an
-     * error or inconsistency in the parameters.
-     * 
-     * @param params The source of the parameters to construct the
-     *               poll table entry. If the parameters were defined on
-     *               a service, this will be an {@link AxisService}
-     *               instance.
-     * @return
-     */
-    protected abstract T createPollTableEntry(ParameterInclude params) throws AxisFault;
-
-    /**
-     * Get the EPR for the given service
-     * 
-     * @param serviceName service name
-     * @param ip          ignored
-     * @return the EPR for the service
-     * @throws AxisFault not used
-     */
-    public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
-        for (T entry : pollTable) {
-            AxisService service = entry.getService();
-            if (service != null) {
-                String candidateName = service.getName();
-                if (candidateName.equals(serviceName) ||
-                        serviceName.startsWith(candidateName + ".")) {
-                    return entry.getEndpointReferences(ip);
-                }
-            }
-        }
-        return null;
-    }
-
-    @Override
-    protected void stopListeningForService(AxisService service) {
-        for (T entry : pollTable) {
-            if (service == entry.getService()) {
-                cancelPoll(entry);
-                break;
-            }
-        }
-    }
-
     // -- jmx/management methods--
     /**
      * Pause the listener - Stop accepting/processing new messages, but continues processing existing

Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListenerEx.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListenerEx.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListenerEx.java (original)
+++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/AbstractTransportListenerEx.java Sun Jun 14 15:02:31 2009
@@ -18,14 +18,16 @@
 */
 package org.apache.axis2.transport.base;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.List;
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.TransportInDescription;
 
 /**
  * Partial implementation of {@link AbstractTransportListener} with a higher level
@@ -41,7 +43,39 @@
         extends AbstractTransportListener {
     
     /** A Map of service name to the protocol endpoints */
-    private Map<String,E> endpoints = new HashMap<String,E>();
+    private List<E> endpoints = new ArrayList<E>();
+
+    @Override
+    public void init(ConfigurationContext cfgCtx,
+            TransportInDescription transportIn) throws AxisFault {
+
+        super.init(cfgCtx, transportIn);
+        
+        // Create endpoint configured at transport level (if available)
+        E endpoint = createEndpoint();
+        if (endpoint.loadConfiguration(transportIn)) {
+            startEndpoint(endpoint);
+            endpoints.add(endpoint);
+        }
+    }
+    
+    @Override
+    public void destroy() {
+        // Explicitly stop all endpoints not predispatched to services. All other endpoints will
+        // be stopped by stopListeningForService.
+        List<E> endpointsToStop = new ArrayList<E>();
+        for (E endpoint : endpoints) {
+            if (endpoint.getService() == null) {
+                endpointsToStop.add(endpoint);
+            }
+        }
+        for (E endpoint : endpointsToStop) {
+            stopEndpoint(endpoint);
+            endpoints.remove(endpoint);
+        }
+        
+        super.destroy();
+    }
 
     @Override
     public EndpointReference[] getEPRsForService(String serviceName, String ip) throws AxisFault {
@@ -53,16 +87,19 @@
         if (serviceName.indexOf('.') != -1) {
             serviceName = serviceName.substring(0, serviceName.indexOf('.'));
         }
-        E endpoint = endpoints.get(serviceName);
-        if (endpoint != null) {
-            return endpoint.getEndpointReferences(ip);
-        } else {
-            return null;
+        for (E endpoint : endpoints) {
+            AxisService service = endpoint.getService();
+            if (service != null) {
+                if (service.getName().equals(serviceName)) {
+                    return endpoint.getEndpointReferences(ip);
+                }
+            }
         }
+        return null;
     }
 
     public final Collection<E> getEndpoints() {
-        return Collections.unmodifiableCollection(endpoints.values());
+        return Collections.unmodifiableCollection(endpoints);
     }
 
     protected abstract E createEndpoint();
@@ -71,22 +108,28 @@
     protected final void startListeningForService(AxisService service) throws AxisFault {
         E endpoint = createEndpoint();
         endpoint.setService(service);
-        configureAndStartEndpoint(endpoint, service);
-        endpoints.put(service.getName(), endpoint);
+        if (endpoint.loadConfiguration(service)) {
+            startEndpoint(endpoint);
+            endpoints.add(endpoint);
+        } else {
+            throw new AxisFault("Service doesn't have configuration information for transport " +
+                    getTransportName());
+        }
     }
 
-    protected abstract void configureAndStartEndpoint(E endpoint, AxisService service) throws AxisFault;
+    protected abstract void startEndpoint(E endpoint) throws AxisFault;
 
     @Override
     protected final void stopListeningForService(AxisService service) {
-        E endpoint = endpoints.get(service.getName());
-        if (endpoint != null) {
-            stopEndpoint(endpoint);
-            endpoints.remove(service.getName());
-        } else {
-            log.error("Unable to stop service : " + service.getName() +
-                " - unable to find the corresponding protocol endpoint");
+        for (E endpoint : endpoints) {
+            if (service == endpoint.getService()) {
+                stopEndpoint(endpoint);
+                endpoints.remove(endpoint);
+                return;
+            }
         }
+        log.error("Unable to stop service : " + service.getName() +
+                " - unable to find the corresponding protocol endpoint");
     }
     
     protected abstract void stopEndpoint(E endpoint);

Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/ProtocolEndpoint.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/ProtocolEndpoint.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/ProtocolEndpoint.java (original)
+++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/ProtocolEndpoint.java Sun Jun 14 15:02:31 2009
@@ -21,6 +21,7 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.ParameterInclude;
 
 /**
  * Describes a protocol specific endpoint. This might be a TCP/UDP port, a mail account,
@@ -45,6 +46,24 @@
     }
 
     /**
+     * Configure the endpoint based on the provided parameters.
+     * If no relevant parameters are found, the implementation should
+     * return <code>false</code>. An exception should only be thrown if there is an
+     * error or inconsistency in the parameters.
+     * 
+     * @param params The source of the parameters to construct the
+     *               poll table entry. If the parameters are defined on
+     *               a service, this will be an {@link AxisService}
+     *               instance.
+     * @return <code>true</code> if the parameters contained the required configuration
+     *         information and the endpoint has been configured, <code>false</code> if
+     *         the no configuration for the endpoint is present in the parameters
+     * @throws AxisFault if configuration information is present, but there is an
+     *         error or inconsistency in the parameters
+     */
+    public abstract boolean loadConfiguration(ParameterInclude params) throws AxisFault;
+    
+    /**
      * Get the endpoint references for this protocol endpoint.
      * 
      * @param ip The host name or IP address of the local host. The implementation should use

Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/AbstractDatagramTransportListener.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/AbstractDatagramTransportListener.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/AbstractDatagramTransportListener.java (original)
+++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/AbstractDatagramTransportListener.java Sun Jun 14 15:02:31 2009
@@ -23,10 +23,8 @@
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.transport.base.AbstractTransportListenerEx;
-import org.apache.axis2.transport.base.ParamUtils;
 
 public abstract class AbstractDatagramTransportListener<E extends DatagramEndpoint>
         extends AbstractTransportListenerEx<E> {
@@ -57,12 +55,17 @@
     }
 	
     @Override
-    protected void configureAndStartEndpoint(E endpoint, AxisService service) throws AxisFault {
+    protected final E createEndpoint() {
+        E endpoint = doCreateEndpoint();
         endpoint.setListener(this);
-        endpoint.setContentType(ParamUtils.getRequiredParam(
-                service, "transport." + getTransportName() + ".contentType"));
         endpoint.setMetrics(metrics);
-        
+        return endpoint;
+    }
+    
+    protected abstract E doCreateEndpoint();
+
+    @Override
+    protected void startEndpoint(E endpoint) throws AxisFault {
         try {
             dispatcher.addEndpoint(endpoint);
         } catch (IOException ex) {
@@ -72,7 +75,7 @@
         if (log.isDebugEnabled()) {
             log.debug("Started listening on endpoint " + endpoint.getEndpointReferences(defaultIp)[0]
                     + " [contentType=" + endpoint.getContentType()
-                    + "; service=" + service.getName() + "]");
+                    + "; service=" + endpoint.getServiceName() + "]");
         }
     }
     

Modified: webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/DatagramEndpoint.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/DatagramEndpoint.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/DatagramEndpoint.java (original)
+++ webservices/commons/trunk/modules/transport/modules/base/src/main/java/org/apache/axis2/transport/base/datagram/DatagramEndpoint.java Sun Jun 14 15:02:31 2009
@@ -18,7 +18,10 @@
  */
 package org.apache.axis2.transport.base.datagram;
 
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.ParameterInclude;
 import org.apache.axis2.transport.base.MetricsCollector;
+import org.apache.axis2.transport.base.ParamUtils;
 import org.apache.axis2.transport.base.ProtocolEndpoint;
 
 /**
@@ -46,10 +49,6 @@
         return contentType;
     }
 
-    public void setContentType(String contentType) {
-		this.contentType = contentType;
-	}
-
 	public MetricsCollector getMetrics() {
         return metrics;
     }
@@ -57,4 +56,11 @@
 	public void setMetrics(MetricsCollector metrics) {
 		this.metrics = metrics;
 	}
+
+    @Override
+    public boolean loadConfiguration(ParameterInclude params) throws AxisFault {
+        contentType = ParamUtils.getRequiredParam(
+                params, "transport." + listener.getTransportName() + ".contentType");
+        return true;
+    }
 }

Modified: webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSEndpoint.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSEndpoint.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSEndpoint.java (original)
+++ webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSEndpoint.java Sun Jun 14 15:02:31 2009
@@ -15,10 +15,20 @@
 */
 package org.apache.axis2.transport.jms;
 
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.ParameterInclude;
+import org.apache.axis2.transport.base.BaseConstants;
 import org.apache.axis2.transport.base.ProtocolEndpoint;
+import org.apache.axis2.transport.base.threads.WorkerPool;
+import org.apache.axis2.transport.jms.ctype.ContentTypeRuleFactory;
 import org.apache.axis2.transport.jms.ctype.ContentTypeRuleSet;
+import org.apache.axis2.transport.jms.ctype.MessageTypeRule;
+import org.apache.axis2.transport.jms.ctype.PropertyRule;
 import org.apache.axis2.addressing.EndpointReference;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import java.util.List;
 import java.util.ArrayList;
@@ -26,6 +36,8 @@
 import java.util.Set;
 import java.util.HashSet;
 
+import javax.jms.BytesMessage;
+import javax.jms.TextMessage;
 import javax.naming.Context;
 
 /**
@@ -34,6 +46,11 @@
  * into Axis2.
  */
 public class JMSEndpoint extends ProtocolEndpoint {
+    private static final Log log = LogFactory.getLog(JMSEndpoint.class);
+    
+    private final JMSListener listener;
+    private final WorkerPool workerPool;
+    
     private JMSConnectionFactory cf;
     private String jndiDestinationName;
     private int destinationType = JMSConstants.GENERIC;
@@ -41,15 +58,16 @@
     private ContentTypeRuleSet contentTypeRuleSet;
     private ServiceTaskManager serviceTaskManager;
 
-    public String getJndiDestinationName() {
-        return jndiDestinationName;
+    public JMSEndpoint(JMSListener listener, WorkerPool workerPool) {
+        this.listener = listener;
+        this.workerPool = workerPool;
     }
 
-    public void setJndiDestinationName(String destinationJNDIName) {
-        this.jndiDestinationName = destinationJNDIName;
+    public String getJndiDestinationName() {
+        return jndiDestinationName;
     }
 
-    public void setDestinationType(String destinationType) {
+    private void setDestinationType(String destinationType) {
         if (JMSConstants.DESTINATION_TYPE_TOPIC.equalsIgnoreCase(destinationType)) {
             this.destinationType = JMSConstants.TOPIC;
         } else if (JMSConstants.DESTINATION_TYPE_QUEUE.equalsIgnoreCase(destinationType)) {
@@ -64,7 +82,7 @@
         return endpointReferences.toArray(new EndpointReference[endpointReferences.size()]);
     }
 
-    public void computeEPRs() {
+    private void computeEPRs() {
         List<EndpointReference> eprs = new ArrayList<EndpointReference>();
         for (Object o : getService().getParameters()) {
             Parameter p = (Parameter) o;
@@ -130,18 +148,10 @@
         return contentTypeRuleSet;
     }
 
-    public void setContentTypeRuleSet(ContentTypeRuleSet contentTypeRuleSet) {
-        this.contentTypeRuleSet = contentTypeRuleSet;
-    }
-
     public JMSConnectionFactory getCf() {
         return cf;
     }
 
-    public void setCf(JMSConnectionFactory cf) {
-        this.cf = cf;
-    }
-
     public ServiceTaskManager getServiceTaskManager() {
         return serviceTaskManager;
     }
@@ -149,4 +159,58 @@
     public void setServiceTaskManager(ServiceTaskManager serviceTaskManager) {
         this.serviceTaskManager = serviceTaskManager;
     }
+
+    @Override
+    public boolean loadConfiguration(ParameterInclude params) throws AxisFault {
+        // We only support endpoints configured at service level
+        if (!(params instanceof AxisService)) {
+            return false;
+        }
+        
+        AxisService service = (AxisService)params;
+        
+        cf = listener.getConnectionFactory(service);
+        if (cf == null) {
+            return false;
+        }
+
+        Parameter destParam = service.getParameter(JMSConstants.PARAM_DESTINATION);
+        if (destParam != null) {
+            jndiDestinationName = (String)destParam.getValue();
+        } else {
+            // Assume that the JNDI destination name is the same as the service name
+            jndiDestinationName = service.getName();
+        }
+        
+        Parameter destTypeParam = service.getParameter(JMSConstants.PARAM_DEST_TYPE);
+        if (destTypeParam != null) {
+            String paramValue = (String) destTypeParam.getValue();
+            if (JMSConstants.DESTINATION_TYPE_QUEUE.equals(paramValue) ||
+                    JMSConstants.DESTINATION_TYPE_TOPIC.equals(paramValue) )  {
+                setDestinationType(paramValue);
+            } else {
+                throw new AxisFault("Invalid destinaton type value " + paramValue);
+            }
+        } else {
+            log.debug("JMS destination type not given. default queue");
+            destinationType = JMSConstants.QUEUE;
+        }
+        
+        Parameter contentTypeParam = service.getParameter(JMSConstants.CONTENT_TYPE_PARAM);
+        if (contentTypeParam == null) {
+            contentTypeRuleSet = new ContentTypeRuleSet();
+            contentTypeRuleSet.addRule(new PropertyRule(BaseConstants.CONTENT_TYPE));
+            contentTypeRuleSet.addRule(new MessageTypeRule(BytesMessage.class, "application/octet-stream"));
+            contentTypeRuleSet.addRule(new MessageTypeRule(TextMessage.class, "text/plain"));
+        } else {
+            contentTypeRuleSet = ContentTypeRuleFactory.parse(contentTypeParam);
+        }
+
+        computeEPRs(); // compute service EPR and keep for later use        
+        
+        serviceTaskManager = ServiceTaskManagerFactory.createTaskManagerForService(cf, service, workerPool);
+        serviceTaskManager.setJmsMessageReceiver(new JMSMessageReceiver(listener, cf, this));
+        
+        return true;
+    }
 }

Modified: webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java (original)
+++ webservices/commons/trunk/modules/transport/modules/jms/src/main/java/org/apache/axis2/transport/jms/JMSListener.java Sun Jun 14 15:02:31 2009
@@ -27,13 +27,6 @@
 import org.apache.axis2.transport.base.event.TransportErrorListener;
 import org.apache.axis2.transport.base.event.TransportErrorSource;
 import org.apache.axis2.transport.base.event.TransportErrorSourceSupport;
-import org.apache.axis2.transport.jms.ctype.ContentTypeRuleFactory;
-import org.apache.axis2.transport.jms.ctype.ContentTypeRuleSet;
-import org.apache.axis2.transport.jms.ctype.MessageTypeRule;
-import org.apache.axis2.transport.jms.ctype.PropertyRule;
-
-import javax.jms.BytesMessage;
-import javax.jms.TextMessage;
 
 /**
  * The revamped JMS Transport listener implementation. Creates {@link ServiceTaskManager} instances
@@ -78,7 +71,7 @@
 
     @Override
     protected JMSEndpoint createEndpoint() {
-        return new JMSEndpoint();
+        return new JMSEndpoint(this, workerPool);
     }
 
     /**
@@ -87,54 +80,10 @@
      * @param service the Axis service for which to listen for messages
      */
     @Override
-    protected void configureAndStartEndpoint(JMSEndpoint endpoint, AxisService service) throws AxisFault {
-        JMSConnectionFactory cf = getConnectionFactory(service);
-        if (cf == null) {
-            throw new AxisFault("The service doesn't specify a JMS connection factory or refers " +
-                "to an invalid factory.");
-        }
-
-        endpoint.setCf(cf);
-
-        Parameter destParam = service.getParameter(JMSConstants.PARAM_DESTINATION);
-        if (destParam != null) {
-            endpoint.setJndiDestinationName((String)destParam.getValue());
-        } else {
-            // Assume that the JNDI destination name is the same as the service name
-            endpoint.setJndiDestinationName(service.getName());
-        }
-        
-        Parameter destTypeParam = service.getParameter(JMSConstants.PARAM_DEST_TYPE);
-        if (destTypeParam != null) {
-            String paramValue = (String) destTypeParam.getValue();
-            if (JMSConstants.DESTINATION_TYPE_QUEUE.equals(paramValue) ||
-                    JMSConstants.DESTINATION_TYPE_TOPIC.equals(paramValue) )  {
-                endpoint.setDestinationType(paramValue);
-            } else {
-                throw new AxisFault("Invalid destinaton type value " + paramValue);
-            }
-        } else {
-            log.debug("JMS destination type not given. default queue");
-            endpoint.setDestinationType(JMSConstants.DESTINATION_TYPE_QUEUE);
-        }
-        
-        Parameter contentTypeParam = service.getParameter(JMSConstants.CONTENT_TYPE_PARAM);
-        if (contentTypeParam == null) {
-            ContentTypeRuleSet contentTypeRuleSet = new ContentTypeRuleSet();
-            contentTypeRuleSet.addRule(new PropertyRule(BaseConstants.CONTENT_TYPE));
-            contentTypeRuleSet.addRule(new MessageTypeRule(BytesMessage.class, "application/octet-stream"));
-            contentTypeRuleSet.addRule(new MessageTypeRule(TextMessage.class, "text/plain"));
-            endpoint.setContentTypeRuleSet(contentTypeRuleSet);
-        } else {
-            endpoint.setContentTypeRuleSet(ContentTypeRuleFactory.parse(contentTypeParam));
-        }
-
-        endpoint.computeEPRs(); // compute service EPR and keep for later use        
+    protected void startEndpoint(JMSEndpoint endpoint) throws AxisFault {
+        ServiceTaskManager stm = endpoint.getServiceTaskManager();
         
-        ServiceTaskManager stm = ServiceTaskManagerFactory.createTaskManagerForService(cf, service, workerPool);
-        stm.setJmsMessageReceiver(new JMSMessageReceiver(this, cf, endpoint));
         stm.start();
-        endpoint.setServiceTaskManager(stm);
 
         for (int i=0; i<3; i++) {
             if (stm.getActiveTaskCount() > 0) {

Modified: webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java (original)
+++ webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/MailTransportListener.java Sun Jun 14 15:02:31 2009
@@ -737,109 +737,8 @@
     }
 
     @Override
-    protected PollTableEntry createPollTableEntry(ParameterInclude paramIncl) throws AxisFault {
-        String address =
-            ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_ADDRESS);
-        if (address == null) {
-            return null;
-        } else {
-            PollTableEntry entry = new PollTableEntry();
-            try {
-                entry.setEmailAddress(address);
-            } catch (AddressException e) {
-                throw new AxisFault("Invalid email address specified by '" +
-                        MailConstants.TRANSPORT_MAIL_ADDRESS + "' parameter :: " + e.getMessage());
-            }
-
-            List<Parameter> params = paramIncl.getParameters();
-            Properties props = new Properties();
-            for (Parameter p : params) {
-                if (p.getName().startsWith("mail.")) {
-                    props.setProperty(p.getName(), (String) p.getValue());
-                }
-
-                if (MailConstants.MAIL_POP3_USERNAME.equals(p.getName()) ||
-                    MailConstants.MAIL_IMAP_USERNAME.equals(p.getName())) {
-                    entry.setUserName((String) p.getValue());
-                }
-                if (MailConstants.MAIL_POP3_PASSWORD.equals(p.getName()) ||
-                    MailConstants.MAIL_IMAP_PASSWORD.equals(p.getName())) {
-                    entry.setPassword((String) p.getValue());
-                }
-                if (MailConstants.TRANSPORT_MAIL_PROTOCOL.equals(p.getName())) {
-                    entry.setProtocol((String) p.getValue());
-                }
-            }
-
-            Session session = Session.getInstance(props, null);
-            MailUtils.setupLogging(session, log, paramIncl);
-            entry.setSession(session);
-
-            entry.setContentType(
-                ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_CONTENT_TYPE));
-            try {
-                entry.setReplyAddress(
-                    ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_REPLY_ADDRESS));
-            } catch (AddressException e) {
-                throw new AxisFault("Invalid email address specified by '" +
-                        MailConstants.TRANSPORT_MAIL_REPLY_ADDRESS + "' parameter :: " +
-                        e.getMessage());
-            }
-
-            entry.setFolder(
-                ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_FOLDER));
-
-            entry.addPreserveHeaders(
-                ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_PRESERVE_HEADERS));
-            entry.addRemoveHeaders(
-                ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_REMOVE_HEADERS));
-
-            String option = ParamUtils.getOptionalParam(
-                paramIncl, MailConstants.TRANSPORT_MAIL_ACTION_AFTER_PROCESS);
-            entry.setActionAfterProcess(
-                MOVE.equals(option) ? PollTableEntry.MOVE : PollTableEntry.DELETE);
-            option = ParamUtils.getOptionalParam(
-                paramIncl, MailConstants.TRANSPORT_MAIL_ACTION_AFTER_FAILURE);
-            entry.setActionAfterFailure(
-                MOVE.equals(option) ? PollTableEntry.MOVE : PollTableEntry.DELETE);
-
-            String moveFolderAfterProcess = ParamUtils.getOptionalParam(
-                paramIncl, MailConstants.TRANSPORT_MAIL_MOVE_AFTER_PROCESS);
-            entry.setMoveAfterProcess(moveFolderAfterProcess);
-            String modeFolderAfterFailure = ParamUtils.getOptionalParam(
-                paramIncl, MailConstants.TRANSPORT_MAIL_MOVE_AFTER_FAILURE);
-            entry.setMoveAfterFailure(modeFolderAfterFailure);
-
-            String processInParallel = ParamUtils.getOptionalParam(
-                paramIncl, MailConstants.TRANSPORT_MAIL_PROCESS_IN_PARALLEL);
-            if (processInParallel != null) {
-                entry.setProcessingMailInParallel(Boolean.parseBoolean(processInParallel));
-                if (log.isDebugEnabled() && entry.isProcessingMailInParallel()) {
-                    log.debug("Parallel mail processing enabled for : " + address);
-                }
-            }
-
-            String pollInParallel = ParamUtils.getOptionalParam(
-                paramIncl, BaseConstants.TRANSPORT_POLL_IN_PARALLEL);
-            if (pollInParallel != null) {
-                entry.setConcurrentPollingAllowed(Boolean.parseBoolean(pollInParallel));
-                if (log.isDebugEnabled() && entry.isConcurrentPollingAllowed()) {
-                    log.debug("Concurrent mail polling enabled for : " + address);
-                }
-            }
-
-            String strMaxRetryCount = ParamUtils.getOptionalParam(
-                paramIncl, MailConstants.MAX_RETRY_COUNT);
-            if (strMaxRetryCount != null)
-                entry.setMaxRetryCount(Integer.parseInt(strMaxRetryCount));
-
-            String strReconnectTimeout = ParamUtils.getOptionalParam(
-                paramIncl, MailConstants.RECONNECT_TIMEOUT);
-            if (strReconnectTimeout != null)
-                entry.setReconnectTimeout(Integer.parseInt(strReconnectTimeout) * 1000);
-
-            return entry;
-        }
+    protected PollTableEntry createEndpoint() {
+        return new PollTableEntry(log);
     }
 
     public void addErrorListener(TransportErrorListener listener) {

Modified: webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/PollTableEntry.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/PollTableEntry.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/PollTableEntry.java (original)
+++ webservices/commons/trunk/modules/transport/modules/mail/src/main/java/org/apache/axis2/transport/mail/PollTableEntry.java Sun Jun 14 15:02:31 2009
@@ -21,6 +21,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 import java.util.StringTokenizer;
 import java.util.Collections;
 
@@ -28,14 +29,21 @@
 import javax.mail.internet.AddressException;
 import javax.mail.internet.InternetAddress;
 
+import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.ParameterInclude;
 import org.apache.axis2.transport.base.AbstractPollTableEntry;
+import org.apache.axis2.transport.base.BaseConstants;
+import org.apache.axis2.transport.base.ParamUtils;
+import org.apache.commons.logging.Log;
 
 /**
  * Holds information about an entry in the VFS transport poll table used by the
  * VFS Transport Listener
  */
 public class PollTableEntry extends AbstractPollTableEntry {
+    private final Log log;
 
     // operation after mail check
     public static final int DELETE = 0;
@@ -85,6 +93,10 @@
     private int maxRetryCount;
     private long reconnectTimeout;
 
+    public PollTableEntry(Log log) {
+        this.log = log;
+    }
+
     @Override
     public EndpointReference[] getEndpointReferences(String ip) {
         return new EndpointReference[] { new EndpointReference(MailConstants.TRANSPORT_PREFIX
@@ -95,108 +107,54 @@
         return emailAddress;
     }
 
-    public void setEmailAddress(String emailAddress) throws AddressException {        
-        this.emailAddress = new InternetAddress(emailAddress);
-    }
-
     public String getUserName() {
         return userName;
     }
 
-    public void setUserName(String userName) {
-        this.userName = userName;
-    }
-
     public String getPassword() {
         return password;
     }
 
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
     public String getXServicePath() {
         return xServicePath;
     }
 
-    public void setXServicePath(String xServicePath) {
-        this.xServicePath = xServicePath;
-    }
-
     public String getContentType() {
         return contentType;
     }
 
-    public void setContentType(String contentType) {
-        this.contentType = contentType;
-    }
-
     public int getActionAfterProcess() {
         return actionAfterProcess;
     }
 
-    public void setActionAfterProcess(int actionAfterProcess) {
-        this.actionAfterProcess = actionAfterProcess;
-    }
-
     public int getActionAfterFailure() {
         return actionAfterFailure;
     }
 
-    public void setActionAfterFailure(int actionAfterFailure) {
-        this.actionAfterFailure = actionAfterFailure;
-    }
-
     public String getMoveAfterProcess() {
         return moveAfterProcess;
     }
 
-    public void setMoveAfterProcess(String moveAfterProcess) {
-        this.moveAfterProcess = moveAfterProcess;
-    }
-
     public String getMoveAfterFailure() {
         return moveAfterFailure;
     }
 
-    public void setMoveAfterFailure(String moveAfterFailure) {
-        this.moveAfterFailure = moveAfterFailure;
-    }
-
     public int getMaxRetryCount() {
       return maxRetryCount;
     }
 
-    public void setMaxRetryCount(int maxRetryCount) {
-      this.maxRetryCount = maxRetryCount;
-    }
-
     public long getReconnectTimeout() {
       return reconnectTimeout;
     }
 
-    public void setReconnectTimeout(long reconnectTimeout) {
-      this.reconnectTimeout = reconnectTimeout;
-    }
-
     public String getFolder() {
         return folder;
     }
 
-    public void setFolder(String folder) {
-        this.folder = folder;
-    }
-
     public InternetAddress getReplyAddress() {
         return replyAddress;
     }
 
-    public void setReplyAddress(String replyAddress) throws AddressException {
-        if (replyAddress != null) {
-            this.replyAddress = new InternetAddress(replyAddress);   
-        }
-    }
-
     /**
      * Get the mail store protocol.
      * This protocol identifier is used in calls to {@link Session#getStore()}.
@@ -207,25 +165,11 @@
         return protocol;
     }
 
-    /**
-     * Set the mail store protocol.
-     * This protocol identifier is used in calls to {@link Session#getStore()}.
-     * 
-     * @param protocol the mail store protocol
-     */
-    public void setProtocol(String protocol) {
-        this.protocol = protocol;
-    }
-
     public Session getSession() {
         return session;
     }
 
-    public void setSession(Session session) {
-        this.session = session;
-    }
-
-    public void addPreserveHeaders(String headerList) {
+    private void addPreserveHeaders(String headerList) {
         if (headerList == null) return;
         StringTokenizer st = new StringTokenizer(headerList, " ,");
         preserveHeaders = new ArrayList<String>();
@@ -237,7 +181,7 @@
         }
     }
 
-    public void addRemoveHeaders(String headerList) {
+    private void addRemoveHeaders(String headerList) {
         if (headerList == null) return;
         StringTokenizer st = new StringTokenizer(headerList, " ,");
         removeHeaders = new ArrayList<String>();
@@ -263,8 +207,111 @@
         return processingMailInParallel;
     }
 
-    public void setProcessingMailInParallel(boolean processingMailInParallel) {
-        this.processingMailInParallel = processingMailInParallel;
+    @Override
+    public boolean loadConfiguration(ParameterInclude paramIncl) throws AxisFault {
+        String address =
+            ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_ADDRESS);
+        if (address == null) {
+            return false;
+        } else {
+            try {
+                emailAddress = new InternetAddress(address);
+            } catch (AddressException e) {
+                throw new AxisFault("Invalid email address specified by '" +
+                        MailConstants.TRANSPORT_MAIL_ADDRESS + "' parameter :: " + e.getMessage());
+            }
+
+            List<Parameter> params = paramIncl.getParameters();
+            Properties props = new Properties();
+            for (Parameter p : params) {
+                if (p.getName().startsWith("mail.")) {
+                    props.setProperty(p.getName(), (String) p.getValue());
+                }
+
+                if (MailConstants.MAIL_POP3_USERNAME.equals(p.getName()) ||
+                    MailConstants.MAIL_IMAP_USERNAME.equals(p.getName())) {
+                    userName = (String) p.getValue();
+                }
+                if (MailConstants.MAIL_POP3_PASSWORD.equals(p.getName()) ||
+                    MailConstants.MAIL_IMAP_PASSWORD.equals(p.getName())) {
+                    password = (String) p.getValue();
+                }
+                if (MailConstants.TRANSPORT_MAIL_PROTOCOL.equals(p.getName())) {
+                    protocol = (String) p.getValue();
+                }
+            }
+
+            session = Session.getInstance(props, null);
+            MailUtils.setupLogging(session, log, paramIncl);
+
+            contentType =
+                ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_CONTENT_TYPE);
+            try {
+                String replyAddress = 
+                    ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_REPLY_ADDRESS);
+                if (replyAddress != null) {
+                    this.replyAddress = new InternetAddress(replyAddress);   
+                }
+            } catch (AddressException e) {
+                throw new AxisFault("Invalid email address specified by '" +
+                        MailConstants.TRANSPORT_MAIL_REPLY_ADDRESS + "' parameter :: " +
+                        e.getMessage());
+            }
+
+            folder =
+                ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_FOLDER);
+
+            addPreserveHeaders(
+                ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_PRESERVE_HEADERS));
+            addRemoveHeaders(
+                ParamUtils.getOptionalParam(paramIncl, MailConstants.TRANSPORT_MAIL_REMOVE_HEADERS));
+
+            String option = ParamUtils.getOptionalParam(
+                paramIncl, MailConstants.TRANSPORT_MAIL_ACTION_AFTER_PROCESS);
+            actionAfterProcess =
+                MailTransportListener.MOVE.equals(option) ? PollTableEntry.MOVE : PollTableEntry.DELETE;
+            option = ParamUtils.getOptionalParam(
+                paramIncl, MailConstants.TRANSPORT_MAIL_ACTION_AFTER_FAILURE);
+            actionAfterFailure =
+                MailTransportListener.MOVE.equals(option) ? PollTableEntry.MOVE : PollTableEntry.DELETE;
+
+            moveAfterProcess = ParamUtils.getOptionalParam(
+                paramIncl, MailConstants.TRANSPORT_MAIL_MOVE_AFTER_PROCESS);
+            moveAfterFailure = ParamUtils.getOptionalParam(
+                paramIncl, MailConstants.TRANSPORT_MAIL_MOVE_AFTER_FAILURE);
+
+            String processInParallel = ParamUtils.getOptionalParam(
+                paramIncl, MailConstants.TRANSPORT_MAIL_PROCESS_IN_PARALLEL);
+            if (processInParallel != null) {
+                processingMailInParallel = Boolean.parseBoolean(processInParallel);
+                if (log.isDebugEnabled() && processingMailInParallel) {
+                    log.debug("Parallel mail processing enabled for : " + address);
+                }
+            }
+
+            String pollInParallel = ParamUtils.getOptionalParam(
+                paramIncl, BaseConstants.TRANSPORT_POLL_IN_PARALLEL);
+            if (pollInParallel != null) {
+                setConcurrentPollingAllowed(Boolean.parseBoolean(pollInParallel));
+                if (log.isDebugEnabled() && isConcurrentPollingAllowed()) {
+                    log.debug("Concurrent mail polling enabled for : " + address);
+                }
+            }
+
+            String strMaxRetryCount = ParamUtils.getOptionalParam(
+                paramIncl, MailConstants.MAX_RETRY_COUNT);
+            if (strMaxRetryCount != null) {
+                maxRetryCount = Integer.parseInt(strMaxRetryCount);
+            }
+
+            String strReconnectTimeout = ParamUtils.getOptionalParam(
+                paramIncl, MailConstants.RECONNECT_TIMEOUT);
+            if (strReconnectTimeout != null) {
+                reconnectTimeout = Integer.parseInt(strReconnectTimeout) * 1000;
+            }
+
+            return super.loadConfiguration(paramIncl);
+        }
     }
 
     public synchronized void processingUID(String uid) {

Modified: webservices/commons/trunk/modules/transport/modules/udp/src/main/java/org/apache/axis2/transport/udp/Endpoint.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/udp/src/main/java/org/apache/axis2/transport/udp/Endpoint.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/udp/src/main/java/org/apache/axis2/transport/udp/Endpoint.java (original)
+++ webservices/commons/trunk/modules/transport/modules/udp/src/main/java/org/apache/axis2/transport/udp/Endpoint.java Sun Jun 14 15:02:31 2009
@@ -22,6 +22,8 @@
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.description.ParameterInclude;
+import org.apache.axis2.transport.base.ParamUtils;
 import org.apache.axis2.transport.base.datagram.DatagramEndpoint;
 import org.apache.axis2.util.Utils;
 
@@ -36,17 +38,20 @@
         return port;
     }
     
-    public void setPort(int port) {
-		this.port = port;
-	}
-
 	public int getMaxPacketSize() {
         return maxPacketSize;
     }
 
-    public void setMaxPacketSize(int maxPacketSize) {
-		this.maxPacketSize = maxPacketSize;
-	}
+    @Override
+    public boolean loadConfiguration(ParameterInclude params) throws AxisFault {
+        port = ParamUtils.getOptionalParamInt(params, UDPConstants.PORT_KEY, -1);
+        if (port == -1) {
+            return false;
+        }
+        maxPacketSize = ParamUtils.getOptionalParamInt(params, UDPConstants.MAX_PACKET_SIZE_KEY,
+                UDPConstants.DEFAULT_MAX_PACKET_SIZE);
+        return super.loadConfiguration(params);
+    }
 
 	@Override
     public EndpointReference[] getEndpointReferences(String ip) throws AxisFault {

Modified: webservices/commons/trunk/modules/transport/modules/udp/src/main/java/org/apache/axis2/transport/udp/UDPListener.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/transport/modules/udp/src/main/java/org/apache/axis2/transport/udp/UDPListener.java?rev=784570&r1=784569&r2=784570&view=diff
==============================================================================
--- webservices/commons/trunk/modules/transport/modules/udp/src/main/java/org/apache/axis2/transport/udp/UDPListener.java (original)
+++ webservices/commons/trunk/modules/transport/modules/udp/src/main/java/org/apache/axis2/transport/udp/UDPListener.java Sun Jun 14 15:02:31 2009
@@ -20,10 +20,7 @@
 
 import java.io.IOException;
 
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.description.AxisService;
 import org.apache.axis2.transport.base.ManagementSupport;
-import org.apache.axis2.transport.base.ParamUtils;
 import org.apache.axis2.transport.base.datagram.AbstractDatagramTransportListener;
 import org.apache.axis2.transport.base.datagram.DatagramDispatcherCallback;
 
@@ -54,14 +51,7 @@
     }
 
     @Override
-    protected Endpoint createEndpoint() {
+    protected Endpoint doCreateEndpoint() {
     	return new Endpoint();
     }
-
-    @Override
-    protected void configureAndStartEndpoint(Endpoint endpoint, AxisService service) throws AxisFault {
-        endpoint.setPort(ParamUtils.getRequiredParamInt(service, UDPConstants.PORT_KEY));
-        endpoint.setMaxPacketSize(ParamUtils.getOptionalParamInt(service, UDPConstants.MAX_PACKET_SIZE_KEY, UDPConstants.DEFAULT_MAX_PACKET_SIZE));
-        super.configureAndStartEndpoint(endpoint, service);
-    }
 }