From 1d5fa185a77c944e8d4a708b451611fa74d5c2dc Mon Sep 17 00:00:00 2001 From: Tammo van Lessen Date: Sun, 7 Oct 2007 22:21:47 +0000 Subject: [PATCH] OPEN - issue ODE-160: ExtensionActivity and ExtensionAssignOperation: Runtime support http://issues.apache.org/jira/browse/ODE-160 IL integration git-svn-id: https://svn.apache.org/repos/asf/ode/trunk@582691 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/ode/axis2/ODEServer.java | 19 +++++++++++++++++++ .../ode/il/config/OdeConfigProperties.java | 6 ++++++ .../java/org/apache/ode/jbi/OdeLifeCycle.java | 19 +++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java b/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java index 6a2324474..eebcfa32e 100644 --- a/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java +++ b/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java @@ -44,6 +44,7 @@ import org.apache.ode.axis2.service.ManagementService; import org.apache.ode.bpel.connector.BpelServerConnector; import org.apache.ode.bpel.dao.BpelDAOConnectionFactory; +import org.apache.ode.bpel.eapi.AbstractExtensionBundle; import org.apache.ode.bpel.engine.BpelServerImpl; import org.apache.ode.bpel.engine.CountLRUDehydrationPolicy; import org.apache.ode.bpel.evtproc.DebugBpelEventListener; @@ -155,6 +156,8 @@ public void init(ServletConfig config, AxisConfiguration axisConf) throws Servle registerEventListeners(); registerMexInterceptors(); + + registerExtensionActivityBundles(); try { _server.start(); @@ -508,6 +511,22 @@ private void registerMexInterceptors() { } } + private void registerExtensionActivityBundles() { + String listenersStr = _odeConfig.getExtensionActivityBundles(); + if (listenersStr != null) { + // TODO replace StringTokenizer by regex + for (StringTokenizer tokenizer = new StringTokenizer(listenersStr, ",;"); tokenizer.hasMoreTokens();) { + String bundleCN = tokenizer.nextToken(); + try { + _server.registerExtensionBundle((AbstractExtensionBundle) Class.forName(bundleCN).newInstance()); + } catch (Exception e) { + __log.warn("Couldn't register the extension bundle " + bundleCN + ", the class couldn't be " + + "loaded properly."); + } + } + } + } + private class ProcessStoreListenerImpl implements ProcessStoreListener { public void onProcessStoreEvent(ProcessStoreEvent event) { diff --git a/il-common/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java b/il-common/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java index e70ea1b8b..e966456f9 100644 --- a/il-common/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java +++ b/il-common/src/main/java/org/apache/ode/il/config/OdeConfigProperties.java @@ -82,6 +82,8 @@ public class OdeConfigProperties { public static final String PROP_PROCESS_DEHYDRATION = "process.dehydration"; public static final String PROP_DAOCF = "dao.factory"; + + public static final String PROP_EXTENSION_BUNDLES= "extension.bundles"; private File _cfgFile; @@ -268,4 +270,8 @@ public String getDbInternalPassword() { return getProperty(PROP_DB_INTERNAL_PASSWORD); } + public String getExtensionActivityBundles() { + return getProperty(PROP_EXTENSION_BUNDLES); + } + } diff --git a/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java b/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java index b1637ed1f..0fa17c52e 100755 --- a/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java +++ b/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java @@ -36,6 +36,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.ode.bpel.connector.BpelServerConnector; import org.apache.ode.bpel.dao.BpelDAOConnectionFactoryJDBC; +import org.apache.ode.bpel.eapi.AbstractExtensionBundle; import org.apache.ode.bpel.engine.BpelServerImpl; import org.apache.ode.bpel.evtproc.DebugBpelEventListener; import org.apache.ode.bpel.iapi.BpelEventListener; @@ -115,6 +116,8 @@ public void init(ComponentContext context) throws JBIException { registerEventListeners(); registerMexInterceptors(); + + registerExtensionActivityBundles(); __log.debug("Starting JCA connector."); initConnector(); @@ -291,6 +294,22 @@ private void registerMexInterceptors() { } } + private void registerExtensionActivityBundles() { + String listenersStr = _ode._config.getExtensionActivityBundles(); + if (listenersStr != null) { + // TODO replace StringTokenizer by regex + for (StringTokenizer tokenizer = new StringTokenizer(listenersStr, ",;"); tokenizer.hasMoreTokens();) { + String bundleCN = tokenizer.nextToken(); + try { + _ode._server.registerExtensionBundle((AbstractExtensionBundle) Class.forName(bundleCN).newInstance()); + } catch (Exception e) { + __log.warn("Couldn't register the extension bundle " + bundleCN + ", the class couldn't be " + + "loaded properly."); + } + } + } + } + public synchronized void start() throws JBIException { if (_started) return;