Author: seanahn
Date: Fri May  1 23:04:00 2009
New Revision: 770855

URL: http://svn.apache.org/viewvc?rev=770855&view=rev
Log:
supporting custom deployment poller

Modified:
    
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
    
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/deploy/DeploymentPoller.java
    
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
    
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java

Modified: 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java?rev=770855&r1=770854&r2=770855&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
 Fri May  1 23:04:00 2009
@@ -21,6 +21,9 @@
 
 import java.io.File;
 import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
 import java.util.StringTokenizer;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -123,30 +126,30 @@
     }
 
     public void init(String contextPath, AxisConfiguration axisConf) throws 
ServletException {
-            _axisConfig = axisConf;
-            String rootDir = System.getProperty("org.apache.ode.rootDir");
-            if (rootDir != null) _appRoot = new File(rootDir);
-            else _appRoot = new File(contextPath);
+       _axisConfig = axisConf;
+        String rootDir = System.getProperty("org.apache.ode.rootDir");
+        if (rootDir != null) _appRoot = new File(rootDir);
+        else _appRoot = new File(contextPath);
 
         if (!_appRoot.isDirectory())
             throw new IllegalArgumentException(_appRoot + " does not exist or 
is not a directory");
-            TempFileManager.setWorkingDirectory(_appRoot);
+        TempFileManager.setWorkingDirectory(_appRoot);
 
-            __log.debug("Loading properties");
-            String confDir = System.getProperty("org.apache.ode.configDir");
-            _configRoot = confDir == null ? new File(_appRoot, "conf") : new 
File(confDir);
+        __log.debug("Loading properties");
+        String confDir = System.getProperty("org.apache.ode.configDir");
+        _configRoot = confDir == null ? new File(_appRoot, "conf") : new 
File(confDir);
         if (!_configRoot.isDirectory())
             throw new IllegalArgumentException(_configRoot + " does not exist 
or is not a directory");
 
-            _odeConfig = new ODEConfigProperties(_configRoot);
+        _odeConfig = new ODEConfigProperties(_configRoot);
 
-            try {
-                _odeConfig.load();
-            } catch (FileNotFoundException fnf) {
-                String errmsg = 
__msgs.msgOdeInstallErrorCfgNotFound(_odeConfig.getFile());
-                __log.warn(errmsg);
-            } catch (Exception ex) {
-                String errmsg = 
__msgs.msgOdeInstallErrorCfgReadError(_odeConfig.getFile());
+        try {
+               _odeConfig.load();
+        } catch (FileNotFoundException fnf) {
+               String errmsg = 
__msgs.msgOdeInstallErrorCfgNotFound(_odeConfig.getFile());
+               __log.warn(errmsg);
+        } catch (Exception ex) {
+               String errmsg = 
__msgs.msgOdeInstallErrorCfgReadError(_odeConfig.getFile());
                 __log.error(errmsg, ex);
                 throw new ServletException(errmsg, ex);
             }
@@ -157,38 +160,41 @@
         if (!_workRoot.isDirectory())
             throw new IllegalArgumentException(_workRoot + " does not exist or 
is not a directory");
 
-            __log.debug("Initializing transaction manager");
-            initTxMgr();
-            __log.debug("Creating data source.");
-            initDataSource();
-            __log.debug("Starting DAO.");
-            initDAO();
-            EndpointReferenceContextImpl eprContext = new 
EndpointReferenceContextImpl(this);            
-            __log.debug("Initializing BPEL process store.");
-            initProcessStore(eprContext);
-            __log.debug("Initializing BPEL server.");
-            initBpelServer(eprContext);
-            __log.debug("Initializing HTTP connection manager");
-            initHttpConnectionManager();
-
-            // Register BPEL event listeners configured in axis2.properties 
file.
-            registerEventListeners();
-            registerMexInterceptors();
-            registerExternalVariableModules();
+        __log.debug("Initializing transaction manager");
+        initTxMgr();
+        __log.debug("Creating data source.");
+        initDataSource();
+        __log.debug("Starting DAO.");
+        initDAO();
+        EndpointReferenceContextImpl eprContext = new 
EndpointReferenceContextImpl(this);            
+        __log.debug("Initializing BPEL process store.");
+        initProcessStore(eprContext);
+        __log.debug("Initializing BPEL server.");
+        initBpelServer(eprContext);
+        __log.debug("Initializing HTTP connection manager");
+        initHttpConnectionManager();
+
+        // Register BPEL event listeners configured in axis2.properties file.
+        registerEventListeners();
+        registerMexInterceptors();
+        registerExternalVariableModules();
 
-            _store.loadAll();
+        _store.loadAll();
 
-            try {
-            _bpelServer.start();
-            } catch (Exception ex) {
-                String errmsg = __msgs.msgOdeBpelServerStartFailure();
-                __log.error(errmsg, ex);
-                throw new ServletException(errmsg, ex);
-            }
+        try {
+               _bpelServer.start();
+        } catch (Exception ex) {
+               String errmsg = __msgs.msgOdeBpelServerStartFailure();
+               __log.error(errmsg, ex);
+               throw new ServletException(errmsg, ex);
+        }
 
-            _poller = new DeploymentPoller(_store.getDeployDir(), this);
+        _poller = getDeploymentPollerExt();
+        if( _poller == null ) {
+               _poller = new DeploymentPoller(_store.getDeployDir(), this);
+        }
 
-            _mgtService = new ManagementService();
+        _mgtService = new ManagementService();
         _mgtService.enableService(_axisConfig, _bpelServer, _store, 
_appRoot.getAbsolutePath());
 
         try {
@@ -198,17 +204,52 @@
             throw new ServletException(e);
         }
 
-            __log.debug("Starting scheduler");
-            _scheduler.start();
+        __log.debug("Starting scheduler");
+        _scheduler.start();
 
-            __log.debug("Initializing JCA adapter.");
-            initConnector();
+        __log.debug("Initializing JCA adapter.");
+        initConnector();
 
-            _poller.start();
-            
__log.info(__msgs.msgPollingStarted(_store.getDeployDir().getAbsolutePath()));
-            __log.info(__msgs.msgOdeStarted());
-                }
+        _poller.start();
+        
__log.info(__msgs.msgPollingStarted(_store.getDeployDir().getAbsolutePath()));
+        __log.info(__msgs.msgOdeStarted());
+    }
+
+    @SuppressWarnings("unchecked")
+       private DeploymentPoller getDeploymentPollerExt() {
+       DeploymentPoller poller = null;
+       
+       InputStream is = null;
+       try {
+               is = 
ODEServer.class.getResourceAsStream("/deploy-ext.properties");
+               if( is != null ) {
+                       __log.info("A deploy-ext.properties found; will use the 
provided class if applicable.");
+                       try {
+                       Properties props = new Properties();
+                               props.load(is);
+                               String deploymentPollerClass = 
props.getProperty("deploymentPoller.class");
+                               if( deploymentPollerClass == null ) {
+                                       __log.warn("deploy-ext.properties found 
in the class path; however, the file does not have 'deploymentPoller.class' as 
one of the properties!!");
+                               } else {
+                                       Class pollerClass = 
Class.forName(deploymentPollerClass);
+                                       poller = 
(DeploymentPoller)pollerClass.getConstructor(File.class, 
ODEServer.class).newInstance(_store.getDeployDir(), this);
+                                       __log.info("A custom deployment poller: 
" + deploymentPollerClass + " has been plugged in.");
+                               }
+                       } catch( Exception e ) {
+                               __log.warn("Deployment poller extension class 
is not loadable, falling back to the default DeploymentPoller.", e);
+                       }
+               } else if( __log.isDebugEnabled() ) __log.debug("No 
deploy-ext.properties found.");
+       } finally {
+               try {
+                       if(is != null) is.close();
+               } catch( IOException ie ) {
+                       // ignore
+               }
+       }
 
+        return poller;
+    }
+    
     private void initDataSource() throws ServletException {
         _db = new Database(_odeConfig);
         _db.setTransactionManager(_txMgr);

Modified: 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/deploy/DeploymentPoller.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/deploy/DeploymentPoller.java?rev=770855&r1=770854&r2=770855&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/deploy/DeploymentPoller.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/axis2/src/main/java/org/apache/ode/axis2/deploy/DeploymentPoller.java
 Fri May  1 23:04:00 2009
@@ -63,7 +63,7 @@
 
     private PollingThread _poller;
 
-    private ODEServer _odeServer;
+    protected ODEServer _odeServer;
 
     private boolean _onHold = false;
 
@@ -106,6 +106,10 @@
         _poller = null;
     }
 
+    protected boolean isDeploymentFromODEFileSystemAllowed() {
+       return true;
+    }
+
     /**
      * Scan the directory for new (or removed) files (called mainly from 
{...@link PollingThread}) and calls whoever is in charge of
      * the actual deployment (or undeployment).
@@ -114,7 +118,7 @@
         File[] files = _deployDir.listFiles(_fileFilter);
 
         // Checking for new deployment directories
-        if (files != null) {
+        if (isDeploymentFromODEFileSystemAllowed() && files != null) {
                for (File file : files) {
                    File deployXml = new File(file, "deploy.xml");
                    File deployedMarker = new File(_deployDir, file.getName() + 
".deployed");

Modified: 
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java?rev=770855&r1=770854&r2=770855&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/DeploymentUnitDir.java
 Fri May  1 23:04:00 2009
@@ -120,6 +120,11 @@
         return _duDirectory.getName();
     }
 
+    void setName(String name) {
+       // supports extensibility
+       _name = name;
+    }
+
     CBPInfo getCBPInfo(QName typeName) {
         return _processes.get(typeName);
     }

Modified: 
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
URL: 
http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java?rev=770855&r1=770854&r2=770855&view=diff
==============================================================================
--- 
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
 (original)
+++ 
ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessStoreImpl.java
 Fri May  1 23:04:00 2009
@@ -166,12 +166,23 @@
      * Deploys a process.
      */
     public Collection<QName> deploy(final File deploymentUnitDirectory) {
+       return deploy(deploymentUnitDirectory, true, null);
+    }
+
+    /**
+     * Deploys a process.
+     */
+    public Collection<QName> deploy(final File deploymentUnitDirectory, 
boolean activate, String duName) {
         __log.info(__msgs.msgDeployStarting(deploymentUnitDirectory));
 
         final Date deployDate = new Date();
 
         // Create the DU and compile/scan it before acquiring lock.
         final DeploymentUnitDir du = new 
DeploymentUnitDir(deploymentUnitDirectory);
+        if( duName != null ) {
+               // Override the package name if given from the parameter
+               du.setName(duName);
+        }
         try {
             du.compile();
         } catch (CompilationException ce) {
@@ -305,24 +316,28 @@
     }
 
     public Collection<QName> undeploy(final File dir) {
+       return undeploy(dir.getName());
+    }
+
+       public Collection<QName> undeploy(final String duName) {
         try {
             exec(new Callable<Collection<QName>>() {
                 public Collection<QName> call(ConfStoreConnection conn) {
-                    DeploymentUnitDAO dudao = 
conn.getDeploymentUnit(dir.getName());
+                    DeploymentUnitDAO dudao = conn.getDeploymentUnit(duName);
                     if (dudao != null)
                         dudao.delete();
                     return null;
                 }
             });
         } catch (Exception ex) {
-            __log.error("Error synchronizing with data store; " + 
dir.getName() + " may be reappear after restart!");
+            __log.error("Error synchronizing with data store; " + duName + " 
may be reappear after restart!");
         }
 
         Collection<QName> undeployed = Collections.emptyList();
         DeploymentUnitDir du;
         _rw.writeLock().lock();
         try {
-            du = _deploymentUnits.remove(dir.getName());
+            du = _deploymentUnits.remove(duName);
             if (du != null) {
                 undeployed = toPids(du.getProcessNames(), du.getVersion());
             }
@@ -613,7 +628,6 @@
      * @param dudao
      */
     protected List<ProcessConfImpl> load(DeploymentUnitDAO dudao) {
-
         __log.debug("Loading deployment unit record from db: " + 
dudao.getName());
 
         File dudir = findDeployDir(dudao);
@@ -621,6 +635,8 @@
         if (dudir == null || !dudir.exists())
             throw new ContextException("Deployed directory " + (dudir == null 
? "(unknown)" : dudir) + " no longer there!");
         DeploymentUnitDir dud = new DeploymentUnitDir(dudir);
+        // set the name with the one from database
+        dud.setName(dudao.getName());
         dud.scan();
 
         ArrayList<ProcessConfImpl> loaded = new ArrayList<ProcessConfImpl>();


Reply via email to