[jbosstools-commits] JBoss Tools SVN: r3008 - trunk/seam/tests/org.jboss.tools.seam.core.test/src/org/jboss/tools/seam/core/test.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Thu Aug 9 06:10:59 EDT 2007


Author: scabanovich
Date: 2007-08-09 06:10:59 -0400 (Thu, 09 Aug 2007)
New Revision: 3008

Modified:
   trunk/seam/tests/org.jboss.tools.seam.core.test/src/org/jboss/tools/seam/core/test/ScannerTest.java
Log:
EXIN-336 - provided loading @Create, @Destroy, etc. annotated methods for binary scanner

Modified: trunk/seam/tests/org.jboss.tools.seam.core.test/src/org/jboss/tools/seam/core/test/ScannerTest.java
===================================================================
--- trunk/seam/tests/org.jboss.tools.seam.core.test/src/org/jboss/tools/seam/core/test/ScannerTest.java	2007-08-09 10:10:41 UTC (rev 3007)
+++ trunk/seam/tests/org.jboss.tools.seam.core.test/src/org/jboss/tools/seam/core/test/ScannerTest.java	2007-08-09 10:10:59 UTC (rev 3008)
@@ -22,16 +22,19 @@
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.jboss.tools.common.model.XJob;
 import org.jboss.tools.common.test.util.TestProjectProvider;
+import org.jboss.tools.seam.core.BeanType;
 import org.jboss.tools.seam.core.BijectedAttributeType;
 import org.jboss.tools.seam.core.IBijectedAttribute;
 import org.jboss.tools.seam.core.ISeamComponent;
 import org.jboss.tools.seam.core.ISeamComponentDeclaration;
+import org.jboss.tools.seam.core.ISeamComponentMethod;
 import org.jboss.tools.seam.core.ISeamFactory;
 import org.jboss.tools.seam.core.ISeamJavaComponentDeclaration;
 import org.jboss.tools.seam.core.ISeamProject;
 import org.jboss.tools.seam.core.ISeamProperty;
 import org.jboss.tools.seam.core.ISeamXmlComponentDeclaration;
 import org.jboss.tools.seam.core.ScopeType;
+import org.jboss.tools.seam.core.SeamComponentMethodType;
 import org.jboss.tools.seam.core.SeamCoreBuilder;
 import org.jboss.tools.seam.core.event.ISeamValueList;
 import org.jboss.tools.seam.core.event.ISeamValueMap;
@@ -39,6 +42,7 @@
 import org.jboss.tools.seam.core.event.ISeamValueString;
 import org.jboss.tools.seam.internal.core.SeamProject;
 import org.jboss.tools.seam.internal.core.scanner.IFileScanner;
+import org.jboss.tools.seam.internal.core.scanner.LoadedDeclarations;
 import org.jboss.tools.seam.internal.core.scanner.lib.ClassPath;
 import org.jboss.tools.seam.internal.core.scanner.lib.LibraryScanner;
 
@@ -259,19 +263,21 @@
 		assertTrue("Scanner cannot recognise jboss-seam.jar", scanner.isRelevant(f));
 		assertTrue("Scanner cannot recognise jboss-seam.jar content", scanner.isLikelyComponentSource(f));
 
-		ISeamFactory[] cs = null;
+		ISeamFactory[] factories = null;
+		ISeamJavaComponentDeclaration[] componentDeclarations = null;
 		
 		try {
-			cs = scanner.parse(f).getFactories().toArray(new ISeamFactory[0]);
+			LoadedDeclarations ds = scanner.parse(f);
+			factories = ds.getFactories().toArray(new ISeamFactory[0]);
+			componentDeclarations = ds.getComponents().toArray(new ISeamJavaComponentDeclaration[0]);
 		} catch (Exception e) {
-			e.printStackTrace();
 			fail("Error in library scanner:" + e.getMessage());
 		}
-		assertTrue("Factories are not found in jboss-seam.jar", cs != null && cs.length > 0);
+		assertTrue("Factories are not found in jboss-seam.jar", factories != null && factories.length > 0);
 		
 		boolean hasActor = false;
-		for (int i = 0; i < cs.length && !hasActor; i++) {
-			if("actor".equals(cs[i].getName())) hasActor = true;
+		for (int i = 0; i < factories.length && !hasActor; i++) {
+			if("actor".equals(factories[i].getName())) hasActor = true;
 		}
 
 		assertTrue("Factory " + "actor" + " is not found in jboss-seam.jar", hasActor);
@@ -289,9 +295,39 @@
 		 */
 		Set<ISeamFactory> components = seamProject.getFactoriesByName("actor");
 	
-		assertTrue("Seam builder must put actor to project.", components.size()==1);		
+		assertTrue("Seam builder must put actor to project.", components.size()==1);
+		
+		
+		//1. Test component declaration org.jboss.seam.core.dispatcher
+		
+		ISeamJavaComponentDeclaration d = (ISeamJavaComponentDeclaration)findDeclaration(componentDeclarations, "org.jboss.seam.core.dispatcher");
+		assertTrue("Java declaration 'org.jboss.seam.core.dispatcher' is not found", d != null);
+		assertTrue("Java declaration 'org.jboss.seam.core.dispatcher' must be stateless", d.isOfType(BeanType.STATELESS));
+		assertTrue("Java declaration 'org.jboss.seam.core.dispatcher' must have precedence 0", d.getPrecedence() == 0);
+		
+		//2. Test component declaration org.jboss.seam.core.ejb
+		
+		d = (ISeamJavaComponentDeclaration)findDeclaration(componentDeclarations, "org.jboss.seam.core.ejb");
+		assertTrue("Java declaration 'org.jboss.seam.core.ejb' is not found", d != null);
+		assertTrue("Java declaration 'org.jboss.seam.core.dispatcher' must have precedence 0", d.getPrecedence() == 0);
+		Set<ISeamComponentMethod> methods = d.getMethods();
+		ISeamComponentMethod m = find(methods, "startup");
+		assertTrue("Declared method 'startup' is not found in 'org.jboss.seam.core.ejb'", m != null);
+		assertTrue("Method 'startup' in 'org.jboss.seam.core.ejb' must be create method", m.isOfType(SeamComponentMethodType.CREATE));
+		m = find(methods, "shutdown");
+		assertTrue("Declared method 'shutdown' is not found in 'org.jboss.seam.core.ejb'", m != null);
+		assertTrue("Method 'shutdown' in 'org.jboss.seam.core.ejb' must be destroy method", m.isOfType(SeamComponentMethodType.DESTROY));
+		
+		
 	}
 	
+	private ISeamComponentMethod find(Set<ISeamComponentMethod> methods, String name) {
+		for (ISeamComponentMethod m : methods) {
+			if(name.equals(m.getSourceMember().getElementName())) return m;
+		}
+		return null;
+	}
+	
 	/**
 	 * This method is to cover most cases of configuring components 
 	 */




More information about the jbosstools-commits mailing list