[teiid-commits] teiid SVN: r4064 - trunk/jboss-integration/src/main/java/org/teiid/jboss.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon May 7 13:52:05 EDT 2012


Author: rareddy
Date: 2012-05-07 13:52:05 -0400 (Mon, 07 May 2012)
New Revision: 4064

Modified:
   trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDependencyDeployer.java
Log:
TEIID-2029: Adding the ability to specify multiple modules using "lib" property in the vdb.xml file, as well as ability to support JAR based deployments as modules. Also corrected this feature such that, user can add dependencies through both "lib" property and addition into VDB archive's "lib" folder.

Modified: trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDependencyDeployer.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDependencyDeployer.java	2012-05-07 17:50:58 UTC (rev 4063)
+++ trunk/jboss-integration/src/main/java/org/teiid/jboss/VDBDependencyDeployer.java	2012-05-07 17:52:05 UTC (rev 4064)
@@ -23,19 +23,12 @@
 
 import java.io.Closeable;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.StringTokenizer;
 
-import org.jboss.as.server.deployment.Attachments;
-import org.jboss.as.server.deployment.DeploymentPhaseContext;
-import org.jboss.as.server.deployment.DeploymentUnit;
-import org.jboss.as.server.deployment.DeploymentUnitProcessingException;
-import org.jboss.as.server.deployment.DeploymentUnitProcessor;
-import org.jboss.as.server.deployment.module.ModuleDependency;
-import org.jboss.as.server.deployment.module.ModuleRootMarker;
-import org.jboss.as.server.deployment.module.ModuleSpecification;
-import org.jboss.as.server.deployment.module.MountHandle;
-import org.jboss.as.server.deployment.module.ResourceRoot;
-import org.jboss.as.server.deployment.module.TempFileProviderService;
+import org.jboss.as.server.deployment.*;
+import org.jboss.as.server.deployment.module.*;
 import org.jboss.modules.Module;
 import org.jboss.modules.ModuleIdentifier;
 import org.jboss.modules.ModuleLoadException;
@@ -58,20 +51,35 @@
 			return;
 		}
 		
-		String moduleName = null;
-		if (TeiidAttachments.isDynamicVDB(deploymentUnit)) {
-			final VDBMetaData deployment = deploymentUnit.getAttachment(TeiidAttachments.VDB_METADATA);
-			ModuleLoader ml = Module.getCallerModuleLoader();
-			moduleName = deployment.getPropertyValue("lib"); //$NON-NLS-1$
-	        if (moduleName != null && ml != null) {
-		        try {
-	            	ml.loadModule(ModuleIdentifier.create(moduleName));
-		        } catch (ModuleLoadException e) {
-		        	throw new DeploymentUnitProcessingException(IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50088, moduleName, deployment.getName(), deployment.getVersion(), e));
-		        }
-	        }	
-		}
-		else {
+		
+		final VDBMetaData deployment = deploymentUnit.getAttachment(TeiidAttachments.VDB_METADATA);
+		ArrayList<ModuleDependency> localDependencies = new ArrayList<ModuleDependency>();
+		ArrayList<ModuleDependency> userDependencies = new ArrayList<ModuleDependency>();
+		String moduleNames = deployment.getPropertyValue("lib"); //$NON-NLS-1$
+        if (moduleNames != null) {
+        	StringTokenizer modules = new StringTokenizer(moduleNames);
+        	while (modules.hasMoreTokens()) {
+        		String moduleName = modules.nextToken().trim();
+            	ModuleIdentifier lib = ModuleIdentifier.create(moduleName);
+            	ModuleLoader moduleLoader = Module.getCallerModuleLoader();
+    	        
+            	try {
+    	        	moduleLoader.loadModule(lib);
+    	        	localDependencies.add(new ModuleDependency(moduleLoader, ModuleIdentifier.create(moduleName), false, false, false, false));
+    	        } catch (ModuleLoadException e) {
+    	        	// this is to handle JAR based deployments which take on name like "deployment.<jar-name>"
+    	        	moduleLoader = deploymentUnit.getAttachment(Attachments.SERVICE_MODULE_LOADER);
+    	        	try {
+    	        		moduleLoader.loadModule(lib);
+    	        		userDependencies.add(new ModuleDependency(moduleLoader, ModuleIdentifier.create(moduleName), false, false, false, true));
+    				} catch (ModuleLoadException e1) {
+    		        	throw new DeploymentUnitProcessingException(IntegrationPlugin.Util.gs(IntegrationPlugin.Event.TEIID50088, moduleName, deployment.getName(), deployment.getVersion(), e1));					
+    				}
+    	        }
+        	}
+        }
+        
+		if (!TeiidAttachments.isDynamicVDB(deploymentUnit)) {
 			try {
 				final ResourceRoot deploymentResourceRoot = deploymentUnit.getAttachment(Attachments.DEPLOYMENT_ROOT);
 				final VirtualFile deploymentRoot = deploymentResourceRoot.getRoot();
@@ -105,9 +113,12 @@
 			moduleSpecification.addLocalDependency(new ModuleDependency(moduleLoader, ModuleIdentifier.create("org.jboss.teiid.api"), false, false, false, false)); //$NON-NLS-1$
 			moduleSpecification.addLocalDependency(new ModuleDependency(moduleLoader, ModuleIdentifier.create("org.jboss.teiid.common-core"), false, false, false, false)); //$NON-NLS-1$
 			moduleSpecification.addLocalDependency(new ModuleDependency(moduleLoader, ModuleIdentifier.create("javax.api"), false, false, false, false)); //$NON-NLS-1$
-			if (moduleName != null) {
-				moduleSpecification.addLocalDependency(new ModuleDependency(moduleLoader, ModuleIdentifier.create(moduleName), false, false, false, false));
-			}
+        	if (!localDependencies.isEmpty()) {
+        		moduleSpecification.addLocalDependencies(localDependencies);
+        	}
+        	if (!userDependencies.isEmpty()) {
+        		moduleSpecification.addUserDependencies(userDependencies);
+        	}
 		} catch (ModuleLoadException e) {
 			throw new DeploymentUnitProcessingException(IntegrationPlugin.Event.TEIID50018.name(), e);
 		}



More information about the teiid-commits mailing list