[teiid-commits] teiid SVN: r570 - trunk/embedded/src/main/java/com/metamatrix/dqp/embedded/services.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Tue Mar 17 16:29:01 EDT 2009
Author: rareddy
Date: 2009-03-17 16:29:01 -0400 (Tue, 17 Mar 2009)
New Revision: 570
Modified:
trunk/embedded/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedDataService.java
Log:
TEIID-418: Correctly loading the extension path; using the property will exclude the default path, where it includes all the jars from the extensions, which is the mode designer uses.
Modified: trunk/embedded/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedDataService.java
===================================================================
--- trunk/embedded/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedDataService.java 2009-03-17 20:02:26 UTC (rev 569)
+++ trunk/embedded/src/main/java/com/metamatrix/dqp/embedded/services/EmbeddedDataService.java 2009-03-17 20:29:01 UTC (rev 570)
@@ -24,6 +24,7 @@
import java.net.URL;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@@ -53,7 +54,6 @@
import com.metamatrix.common.vdb.api.VDBDefn;
import com.metamatrix.core.vdb.VDBStatus;
import com.metamatrix.dqp.embedded.DQPEmbeddedPlugin;
-import com.metamatrix.dqp.embedded.DQPEmbeddedProperties;
import com.metamatrix.dqp.embedded.configuration.ExtensionModuleReader;
import com.metamatrix.dqp.internal.datamgr.ConnectorID;
import com.metamatrix.dqp.internal.datamgr.impl.ConnectorManager;
@@ -566,6 +566,7 @@
// Ask the configuration if we can use the extension class loader.
boolean useExtensionClassPath = (getConfigurationService().useExtensionClasspath());
String classPath = buildClasspath(connectorProperties);
+
if (classPath == null || classPath.length() == 0) {
useExtensionClassPath = false;
}
@@ -573,11 +574,20 @@
if (!useExtensionClassPath) {
return new ConnectorManager();
}
+
DQPEmbeddedPlugin.logInfo("DataService.useClassloader", new Object[] {classPath}); //$NON-NLS-1$
URL context = getConfigurationService().getExtensionPath();
- URL[] urlPath = ExtensionModuleReader.resolveExtensionClasspath(classPath, context);
+
+ URL[] userPath = ExtensionModuleReader.resolveExtensionClasspath(classPath, context);
+
+ // since we are using the extensions, get the common extension path
+ URL[] commonExtensionPath = getConfigurationService().getCommonExtensionClasspath();
+ ArrayList<URL> urlPath = new ArrayList<URL>();
- ClassLoader classLoader = new URLFilteringClassLoader(urlPath, Thread.currentThread().getContextClassLoader(), new MetaMatrixURLStreamHandlerFactory());
+ urlPath.addAll(Arrays.asList(userPath));
+ urlPath.addAll(Arrays.asList(commonExtensionPath));
+
+ ClassLoader classLoader = new URLFilteringClassLoader(urlPath.toArray(new URL[urlPath.size()]), Thread.currentThread().getContextClassLoader(), new MetaMatrixURLStreamHandlerFactory());
Class cmgrImplClass = classLoader.loadClass(CONNECTOR_MGR_IMPL);
ConnectorManager cm = (ConnectorManager)cmgrImplClass.newInstance();
@@ -592,7 +602,6 @@
StringBuilder sb = new StringBuilder();
appendlasspath(connectorProperties.getProperty(ConnectorPropertyNames.CONNECTOR_CLASSPATH), sb); // this is user defined, could be very specific to the binding
appendlasspath(connectorProperties.getProperty(ConnectorPropertyNames.CONNECTOR_TYPE_CLASSPATH), sb); // this is system defined; type classpath
- appendlasspath(connectorProperties.getProperty(DQPEmbeddedProperties.COMMON_EXTENSION_CLASPATH), sb); // this is common to whole the engine
return sb.toString();
}
More information about the teiid-commits
mailing list