Author: upul
Date: Thu Nov 29 19:14:36 2007
New Revision: 599687

URL: http://svn.apache.org/viewvc?rev=599687&view=rev
Log:
added feature pinning task to server instance with config element pinnedServers

Modified:
    
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
    
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
    
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzFactory.java
    
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzSerializer.java

Modified: 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java?rev=599687&r1=599686&r2=599687&view=diff
==============================================================================
--- 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseInitializationModule.java
 Thu Nov 29 19:14:36 2007
@@ -104,9 +104,9 @@
             sandesha2.init(configurationContext, sandeshaAxisModule);
         }
 
-        // this server name given by system property SynapseServerName
+        // this server name is given by system property SynapseServerName
         // otherwise take host-name
-        // else assume localhost
+        // if nothing found assume localhost
         String thisServerName = 
System.getProperty(SynapseConstants.SYNAPSE_SERVER_NAME);
         if(thisServerName == null || thisServerName.equals("")) {
           try {
@@ -128,9 +128,9 @@
         while (iter.hasNext()) {
             ProxyService proxy = (ProxyService) iter.next();
 
-            // start proxy service if,
+            // start proxy service if either,
             // pinned server name list is empty
-            // else pinned server list has this server name
+            // or pinned server list has this server name
             List pinnedServers = proxy.getPinnedServers();
             if(pinnedServers != null && !pinnedServers.isEmpty()) {
               if(!pinnedServers.contains(thisServerName)) {

Modified: 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java?rev=599687&r1=599686&r2=599687&view=diff
==============================================================================
--- 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartz.java
 Thu Nov 29 19:14:36 2007
@@ -19,7 +19,10 @@
 
 package org.apache.synapse.startup.quartz;
 
+import java.net.InetAddress;
+import java.net.UnknownHostException;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Random;
 import java.util.Set;
 
@@ -29,6 +32,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.synapse.core.SynapseEnvironment;
+import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
 import org.apache.synapse.startup.AbstractStartup;
 import org.quartz.CronTrigger;
@@ -56,6 +60,7 @@
     private int repeatCount = -1;
     private long repeatInterval;
     private String className;
+    private List pinnedServers;
     private Scheduler sch;
     Set xmlProperties = new HashSet();
 
@@ -76,6 +81,37 @@
 
     public void init(SynapseEnvironment synapseEnvironment) {
 
+        // this server name given by system property SynapseServerName
+        // otherwise take host-name
+        // else assume localhost
+        String thisServerName = 
System.getProperty(SynapseConstants.SYNAPSE_SERVER_NAME);
+        if(thisServerName == null || thisServerName.equals("")) {
+          try {
+            InetAddress addr = InetAddress.getLocalHost();
+            thisServerName = addr.getHostName();
+  
+          } catch (UnknownHostException e) {
+            log.warn("Could not get local host name", e);
+          }
+          
+          if(thisServerName == null || thisServerName.equals("")) {
+            thisServerName = "localhost";
+          }
+        }
+        log.debug("Synapse server name : " + thisServerName);
+        
+        // start proxy service if either,
+        // pinned server name list is empty
+        // or pinned server list has this server name
+        List pinnedServers = getPinnedServers();
+        if(pinnedServers != null && !pinnedServers.isEmpty()) {
+          if(!pinnedServers.contains(thisServerName)) {
+            log.info("Server name not in pinned servers list. Not starting 
Task : " + getName());
+            return;
+          }
+        }
+      
+      
         try {
             
DirectSchedulerFactory.getInstance().createVolatileScheduler(THREADPOOLSIZE);
             sch = DirectSchedulerFactory.getInstance().getScheduler();
@@ -162,6 +198,14 @@
 
     public String getCron() {
         return cron;
+    }
+
+    public List getPinnedServers() {
+      return pinnedServers;
+    }
+
+    public void setPinnedServers(List pinnedServers) {
+      this.pinnedServers = pinnedServers;
     }
 
 }

Modified: 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzFactory.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzFactory.java?rev=599687&r1=599686&r2=599687&view=diff
==============================================================================
--- 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzFactory.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzFactory.java
 Thu Nov 29 19:14:36 2007
@@ -19,7 +19,10 @@
 
 package org.apache.synapse.startup.quartz;
 
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
 
 import javax.xml.namespace.QName;
 
@@ -85,6 +88,25 @@
                 q.setJobClass(classname);
             } else {
                 handleException("Syntax error in the Task : no task class 
specified");
+            }
+            
+            // set pinned server list
+            OMAttribute pinnedServers = el.getAttribute(new 
QName(XMLConfigConstants.NULL_NAMESPACE, "pinnedServers"));
+            if (pinnedServers != null) {
+                String pinnedServersValue = pinnedServers.getAttributeValue();
+                if (pinnedServersValue == null) {
+                    // default to all servers
+                } else {
+                    StringTokenizer st = new 
StringTokenizer(pinnedServersValue, " ,");
+                    List pinnedServersList = new ArrayList();
+                    while (st.hasMoreTokens()) {
+                        String token = st.nextToken();
+                        if (token.length() != 0) {
+                          pinnedServersList.add(token);
+                        }
+                    }
+                    q.setPinnedServers(pinnedServersList);
+                }
             }
 
             // next sort out the property children

Modified: 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzSerializer.java
URL: 
http://svn.apache.org/viewvc/webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzSerializer.java?rev=599687&r1=599686&r2=599687&view=diff
==============================================================================
--- 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzSerializer.java
 (original)
+++ 
webservices/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/startup/quartz/SimpleQuartzSerializer.java
 Thu Nov 29 19:14:36 2007
@@ -19,6 +19,8 @@
 
 package org.apache.synapse.startup.quartz;
 
+import java.util.List;
+
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
@@ -53,6 +55,15 @@
         task.addAttribute("name", sq.getName(), nullNS);
         task.addAttribute("class", sq.getJobClass(), nullNS);
 
+        List pinnedServers = sq.getPinnedServers();
+        if (pinnedServers != null && !pinnedServers.isEmpty()) {
+          String pinnedServersStr = "" + pinnedServers.get(0);
+          for (int i = 1; i < pinnedServers.size(); i++) {
+            pinnedServersStr = pinnedServersStr + " " + pinnedServers.get(i);
+          }
+          task.addAttribute(fac.createOMAttribute("pinnedServers", nullNS, 
pinnedServersStr));
+        }
+        
         OMElement el = fac.createOMElement("trigger", synNS, task);
         if (sq.getInterval() == 1 && sq.getCount() == 1) {
             el.addAttribute("once", "true", nullNS);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to