Author: mszefler
Date: Wed Aug 30 07:30:42 2006
New Revision: 438495

URL: http://svn.apache.org/viewvc?rev=438495&view=rev
Log:
Moved MessageExchangeInterceptor interface.

Modified:
    
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java

Modified: 
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java?rev=438495&r1=438494&r2=438495&view=diff
==============================================================================
--- 
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
 (original)
+++ 
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
 Wed Aug 30 07:30:42 2006
@@ -36,18 +36,32 @@
  */
 package org.apache.ode.bpel.engine;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+import javax.xml.namespace.QName;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bom.wsdl.Definition4BPEL;
 import org.apache.ode.bpel.dao.BpelDAOConnection;
 import org.apache.ode.bpel.dao.BpelDAOConnectionFactory;
 import org.apache.ode.bpel.dao.ProcessDAO;
-import org.apache.ode.bpel.dd.TDeployment;
-import org.apache.ode.bpel.dd.TInvoke;
-import org.apache.ode.bpel.dd.TProvide;
-import org.apache.ode.bpel.dd.TService;
+import org.apache.ode.bpel.dd.*;
 import org.apache.ode.bpel.deploy.DeploymentServiceImpl;
-import org.apache.ode.bpel.deploy.DeploymentUnitImpl;
+import org.apache.ode.bpel.engine.deploy.DeploymentUnitImpl;
 import org.apache.ode.bpel.evt.BpelEvent;
 import org.apache.ode.bpel.explang.ConfigurationException;
 import org.apache.ode.bpel.iapi.BindingContext;
@@ -60,7 +74,6 @@
 import org.apache.ode.bpel.iapi.Endpoint;
 import org.apache.ode.bpel.iapi.EndpointReferenceContext;
 import org.apache.ode.bpel.iapi.MessageExchangeContext;
-import org.apache.ode.bpel.iapi.MessageExchangeInterceptor;
 import org.apache.ode.bpel.iapi.Scheduler;
 import org.apache.ode.bpel.o.OExpressionLanguage;
 import org.apache.ode.bpel.o.OPartnerLink;
@@ -70,22 +83,6 @@
 import org.apache.ode.bpel.runtime.ExpressionLanguageRuntimeRegistry;
 import org.apache.ode.utils.msg.MessageBundle;
 
-import javax.xml.namespace.QName;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
 /**
  * The BPEL server implementation.
  */
@@ -168,17 +165,16 @@
             __log.warn("Couldn't deploy " + file.getName() + ", package was 
not found.");
             return false;
         }
-        else {
-            boolean success = true;
-            for (QName pName : du.getProcessNames()) {
-                success = success && undeploy(pName);
-            }
-            rm(du.getDeployDir());
-            for (QName pname : du.getProcessNames()) {
-                _deploymentUnits.remove(pname);
-            }
-            return success;
+
+        boolean success = true;
+        for (QName pName : du.getProcessNames()) {
+            success = success && undeploy(pName);
+        }
+        rm(du.getDeployDir());
+        for (QName pname : du.getProcessNames()) {
+            _deploymentUnits.remove(pname);
         }
+        return success;
     }
 
     private void rm(File f) {
@@ -487,7 +483,15 @@
 
             // Create local message-exchange interceptors.
             List<MessageExchangeInterceptor> localMexInterceptors = new 
LinkedList<MessageExchangeInterceptor>();
-            // TODO
+            for (TMexInterceptor mexi : 
deployInfo.getMexInterceptors().getMexInterceptorList()) {
+                try {
+                    Class cls = Class.forName(mexi.getClassName());
+                    localMexInterceptors.add((MessageExchangeInterceptor) 
cls.newInstance());
+                } catch (Throwable t) {
+                   String errmsg = "Error instantiating message-exchange 
interceptor " + mexi.getClassName();
+                   __log.error(errmsg,t);
+                }
+            }
 
             // Create myRole endpoint name mapping (from deployment descriptor)
             HashMap<OPartnerLink, Endpoint> myRoleEndpoints = new 
HashMap<OPartnerLink, Endpoint>();
@@ -734,59 +738,20 @@
     }
 
 
+    /**
+     * Register a global message exchange interceptor. 
+     * @param interceptor message-exchange interceptor
+     */
     public void registerMessageExchangeInterceptor(MessageExchangeInterceptor 
interceptor) {
-        // TODO Auto-generated method stub
+        // We don't really care all that much about concurrency here, we just 
want to 
+        // avoid ConcurrentModificationEx, so use an array instead of a 
collection. 
+        synchronized(_contexts) {
+            MessageExchangeInterceptor[] r = new 
MessageExchangeInterceptor[1+_contexts.globalIntereceptors.length];
+            
System.arraycopy(_contexts.globalIntereceptors,0,r,0,_contexts.globalIntereceptors.length);
+            r[r.length-1] = interceptor;
+            _contexts.globalIntereceptors = r;
+        }
     }
 
-
-//  public void readState() {
-//  File duState = new File(_deploymentDir, ".state");
-//  if (duState.exists()) {
-//      try {
-//          BufferedReader duStateReader = new BufferedReader(new 
FileReader(duState));
-//          String line;
-//          while ((line = duStateReader.readLine()) != null) {
-//              String filename = line.substring(0, line.indexOf("|"));
-//              long timestamp = Long.valueOf(line.substring(line.indexOf("|") 
+ 1, line.length()));
-//              File duFile = new File(_deploymentDir, filename);
-//              if (duFile.exists()) {
-//                  if (new File(duFile, "deploy.xml").lastModified() > 
timestamp) {
-//                      deploy(duFile);
-//                  } else {
-//                      DeploymentUnitImpl du = (DeploymentUnitImpl) 
deploy(duFile, true);
-//                      du.setLastModified(timestamp);
-//                  }
-//              }
-//          }
-//      } catch (FileNotFoundException e) {
-//          // Shouldn't happen
-//      } catch (Exception e) {
-//          __log.error("An error occured while reading past deployments 
states, some "
-//                  + "processes will be redeployed.", e);
-//      }
-//  } else {
-//      __log.info("Couldn't find any deployment history, all processes will " 
+ "be redeployed.");
-//  }
-//}
-//
-//public void writeState() {
-//  try {
-//      __log.debug("Writing current deployment state.");
-//      FileWriter duStateWriter = new FileWriter(new File(_deploymentDir, 
".state"), false);
-//      for (DeploymentUnitImpl deploymentUnit : _deployedUnits) {
-//          // Somebody using pipe in their directory names don't deserve to
-//          // deploy anything
-//          duStateWriter.write(deploymentUnit.getDuDirectory().getName());
-//          duStateWriter.write("|");
-//          duStateWriter.write("" + deploymentUnit.getLastModified());
-//          duStateWriter.write("\n");
-//      }
-//      duStateWriter.flush();
-//      duStateWriter.close();
-//  } catch (IOException e) {
-//      __log.error("Couldn't write deployment state! Processes could be 
redeployed (or not) "
-//              + "even they don't (or do) need to.", e);
-//  }
-//}
 
 }


Reply via email to