[jbosstools-commits] JBoss Tools SVN: r31044 - in trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core: scanner and 1 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Tue May 3 16:16:44 EDT 2011


Author: scabanovich
Date: 2011-05-03 16:16:44 -0400 (Tue, 03 May 2011)
New Revision: 31044

Modified:
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/util/Util.java
Log:
JBIDE-3120
https://issues.jboss.org/browse/JBIDE-3120

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java	2011-05-03 20:16:26 UTC (rev 31043)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java	2011-05-03 20:16:44 UTC (rev 31044)
@@ -17,6 +17,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.eclipse.core.resources.IResource;
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IType;
 import org.jboss.tools.cdi.core.IAnnotationDeclaration;
@@ -28,7 +29,9 @@
 import org.jboss.tools.cdi.internal.core.impl.definition.ParameterDefinition;
 import org.jboss.tools.cdi.internal.core.impl.definition.TypeDefinition;
 import org.jboss.tools.cdi.seam.config.core.ConfigDefinitionContext;
+import org.jboss.tools.cdi.seam.config.core.xml.Location;
 import org.jboss.tools.cdi.seam.config.core.xml.SAXNode;
+import org.jboss.tools.common.text.ITextSourceReference;
 
 /**
  * 
@@ -36,6 +39,7 @@
  *
  */
 public class SeamBeansDefinition {
+	IResource resource;
 	Map<SAXNode, String> unresolvedNodes = new HashMap<SAXNode, String>();
 
 	Set<SeamBeanDefinition> beanDefinitions = new HashSet<SeamBeanDefinition>();
@@ -46,6 +50,14 @@
 	
 	public SeamBeansDefinition() {}
 
+	public void setResource(IResource resource) {
+		this.resource = resource;
+	}
+
+	public IResource getResource() {
+		return resource;
+	}
+
 	public Map<SAXNode, String> getUnresolvedNodes() {
 		return unresolvedNodes;
 	}
@@ -91,7 +103,6 @@
 			if(replaces) flags |= AbstractMemberDefinition.FLAG_NO_ANNOTATIONS;
 			typeDef.setType(type, context.getRootContext(), flags);
 
-			System.out.println("--merge type def-->" + def.getType().getFullyQualifiedName());
 			mergeTypeDefinition(def, typeDef, context);
 
 			typeDefinitions.add(typeDef);
@@ -115,6 +126,7 @@
 			String n = fieldDef.getField().getElementName();
 			SeamFieldDefinition f = def.getField(n);
 			if(f != null) {
+				fieldDef.setOriginalDefinition(new TextSourceReference(f.getNode().getLocation()));
 				mergeAnnotations(f, fieldDef, context);
 			}
 		}
@@ -152,4 +164,25 @@
 		}
 	}
 
+	class TextSourceReference implements ITextSourceReference {
+		Location location;
+		
+		public TextSourceReference(Location location) {
+			this.location = location;
+		}		
+
+		public int getStartPosition() {
+			return location.getStartPosition();
+		}
+
+		public int getLength() {
+			return location.getLength();
+		}
+
+		public IResource getResource() {
+			return resource;
+		}
+		
+	}
+
 }

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java	2011-05-03 20:16:26 UTC (rev 31043)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java	2011-05-03 20:16:44 UTC (rev 31044)
@@ -63,6 +63,7 @@
 		this.resource = resource;
 		
 		result = new SeamBeansDefinition();
+		result.setResource(resource);
 		if(document.get().indexOf("<") >= 0) { // file can be empty
 			SAXParser parser = new SAXParser();
 			String text = document.get();
@@ -124,6 +125,7 @@
 	}
 
 	private SeamBeanDefinition scanBean(SAXElement element, IType type, boolean inline) {
+		addDependency(type);
 		SeamBeanDefinition def = new SeamBeanDefinition();
 		def.setInline(inline);
 		def.setNode(element);
@@ -421,6 +423,7 @@
 		TypeCheck typeCheck = new TypeCheck(type, element);
 		if(typeCheck.isCorrupted) return null;
 		if(typeCheck.isAnnotation) {
+			addDependency(type);
 			context.getRootContext().getAnnotationKind(type); // kick it
 			String value = null;
 			SAXText text = element.getTextNode();
@@ -475,4 +478,13 @@
 		return new AnnotationLiteral(resource, forElement.getLocation().getStartPosition(), forElement.getLocation().getLength(), null, 0, type);
 	}
 
+	private void addDependency(IType type) {
+		if(!type.exists() || type.isBinary()) return;
+		if(!resource.exists() || resource.getName().endsWith(".jar")) return;
+		//beans.xml depends on type
+		context.getRootContext().addDependency(type.getResource().getFullPath(), resource.getFullPath());
+		//though type does not depend on beans.xml it has to be revalidated. Maybe it should be method addValidationDependency.
+		context.getRootContext().addDependency(resource.getFullPath(), type.getResource().getFullPath());
+	}
+
 }

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/util/Util.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/util/Util.java	2011-05-03 20:16:26 UTC (rev 31043)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/util/Util.java	2011-05-03 20:16:44 UTC (rev 31044)
@@ -94,11 +94,13 @@
 	}
 
 	public static IType resolveType(SAXElement element, CDICoreNature project) {
-		String uri = element.getURI();
+		return resolveType(element.getURI(), element.getLocalName(), project);
+	}
+
+	public static IType resolveType(String name, String uri, CDICoreNature project) {
 		if(uri == null || !uri.startsWith(CDISeamConfigConstants.URI_PREFIX)) {
 			return null;
 		}
-		String name = element.getLocalName();
 		String[] packages = getPackages(uri);
 		for (String pkg: packages) {
 			if(pkg.length() == 0) continue;



More information about the jbosstools-commits mailing list