[jbosstools-commits] JBoss Tools SVN: r30836 - 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
Mon Apr 25 21:12:00 EDT 2011


Author: scabanovich
Date: 2011-04-25 21:12:00 -0400 (Mon, 25 Apr 2011)
New Revision: 30836

Added:
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamFieldDefinition.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMemberDefinition.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMethodDefinition.java
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

Added: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java	2011-04-26 01:12:00 UTC (rev 30836)
@@ -0,0 +1,42 @@
+/******************************************************************************* 
+ * Copyright (c) 2011 Red Hat, Inc. 
+ * Distributed under license by Red Hat, Inc. All rights reserved. 
+ * This program is made available under the terms of the 
+ * Eclipse Public License v1.0 which accompanies this distribution, 
+ * and is available at http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ * Contributors: 
+ * Red Hat, Inc. - initial API and implementation 
+ ******************************************************************************/
+package org.jboss.tools.cdi.seam.config.core.definition;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jdt.core.IType;
+
+/**
+ * 
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class SeamBeanDefinition extends SeamMemberDefinition {
+	IType type = null;
+	List<SeamFieldDefinition> fields = new ArrayList<SeamFieldDefinition>();
+	List<SeamMethodDefinition> methods = new ArrayList<SeamMethodDefinition>();
+
+	public SeamBeanDefinition() {}
+
+	public void setType(IType type) {
+		this.type = type;
+	}
+
+	public void addField(SeamFieldDefinition field) {
+		fields.add(field);
+	}
+
+	public void addMethod(SeamMethodDefinition method) {
+		methods.add(method);
+	}
+
+}


Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

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-04-25 22:35:27 UTC (rev 30835)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java	2011-04-26 01:12:00 UTC (rev 30836)
@@ -25,6 +25,8 @@
  */
 public class SeamBeansDefinition {
 	Map<SAXNode, String> unresolvedNodes = new HashMap<SAXNode, String>();
+
+	Set<SeamBeanDefinition> beanDefinitions = new HashSet<SeamBeanDefinition>();
 	
 	public SeamBeansDefinition() {}
 
@@ -36,4 +38,8 @@
 		unresolvedNodes.put(node, problem);
 	}
 
+	public void addBeanDefinition(SeamBeanDefinition def) {
+		beanDefinitions.add(def);
+	}
+
 }

Added: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamFieldDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamFieldDefinition.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamFieldDefinition.java	2011-04-26 01:12:00 UTC (rev 30836)
@@ -0,0 +1,29 @@
+/******************************************************************************* 
+ * Copyright (c) 2011 Red Hat, Inc. 
+ * Distributed under license by Red Hat, Inc. All rights reserved. 
+ * This program is made available under the terms of the 
+ * Eclipse Public License v1.0 which accompanies this distribution, 
+ * and is available at http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ * Contributors: 
+ * Red Hat, Inc. - initial API and implementation 
+ ******************************************************************************/
+package org.jboss.tools.cdi.seam.config.core.definition;
+
+import org.eclipse.jdt.core.IField;
+
+/**
+ * 
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class SeamFieldDefinition extends SeamMemberDefinition {
+	IField field;
+
+	public SeamFieldDefinition() {}
+
+	public void setField(IField field) {
+		this.field = field;
+	}
+
+}


Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamFieldDefinition.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMemberDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMemberDefinition.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMemberDefinition.java	2011-04-26 01:12:00 UTC (rev 30836)
@@ -0,0 +1,47 @@
+/******************************************************************************* 
+ * Copyright (c) 2011 Red Hat, Inc. 
+ * Distributed under license by Red Hat, Inc. All rights reserved. 
+ * This program is made available under the terms of the 
+ * Eclipse Public License v1.0 which accompanies this distribution, 
+ * and is available at http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ * Contributors: 
+ * Red Hat, Inc. - initial API and implementation 
+ ******************************************************************************/
+package org.jboss.tools.cdi.seam.config.core.definition;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.tools.cdi.core.IJavaAnnotation;
+import org.jboss.tools.cdi.seam.config.core.scanner.SAXElement;
+
+/**
+ * 
+ * @author Viacheslav Kabanovich
+ *
+ */
+public abstract class SeamMemberDefinition {
+	protected SAXElement element;
+	SAXElement replaces = null;
+	SAXElement modifies = null;
+	Map<String, IJavaAnnotation> annotations = new HashMap<String, IJavaAnnotation>();
+	
+	public SeamMemberDefinition() {}
+
+	public void setElement(SAXElement element) {
+		this.element = element;
+	}
+
+	public void setReplaces(SAXElement replaces) {
+		this.replaces = replaces;
+	}
+
+	public void setModifies(SAXElement modifies) {
+		this.modifies = modifies;
+	}
+
+	public void addAnnotation(IJavaAnnotation a) {
+		annotations.put(a.getTypeName(), a);
+	}
+}


Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMemberDefinition.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMethodDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMethodDefinition.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMethodDefinition.java	2011-04-26 01:12:00 UTC (rev 30836)
@@ -0,0 +1,29 @@
+/******************************************************************************* 
+ * Copyright (c) 2011 Red Hat, Inc. 
+ * Distributed under license by Red Hat, Inc. All rights reserved. 
+ * This program is made available under the terms of the 
+ * Eclipse Public License v1.0 which accompanies this distribution, 
+ * and is available at http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ * Contributors: 
+ * Red Hat, Inc. - initial API and implementation 
+ ******************************************************************************/
+package org.jboss.tools.cdi.seam.config.core.definition;
+
+import org.eclipse.jdt.core.IMethod;
+
+/**
+ * 
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class SeamMethodDefinition extends SeamMemberDefinition {
+	IMethod method;
+
+	public SeamMethodDefinition() {}
+
+	public void setMethod(IMethod method) {
+		this.method = method;
+	}
+
+}


Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMethodDefinition.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

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-04-25 22:35:27 UTC (rev 30835)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java	2011-04-26 01:12:00 UTC (rev 30836)
@@ -4,6 +4,9 @@
 import java.util.List;
 
 import org.eclipse.core.resources.IResource;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IMember;
+import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jface.text.IDocument;
@@ -14,7 +17,10 @@
 import org.jboss.tools.cdi.seam.config.core.CDISeamConfigConstants;
 import org.jboss.tools.cdi.seam.config.core.CDISeamConfigCorePlugin;
 import org.jboss.tools.cdi.seam.config.core.ConfigDefinitionContext;
+import org.jboss.tools.cdi.seam.config.core.definition.SeamBeanDefinition;
 import org.jboss.tools.cdi.seam.config.core.definition.SeamBeansDefinition;
+import org.jboss.tools.cdi.seam.config.core.definition.SeamFieldDefinition;
+import org.jboss.tools.cdi.seam.config.core.definition.SeamMethodDefinition;
 import org.jboss.tools.cdi.seam.config.core.util.Util;
 
 public class SeamDefinitionBuilder {
@@ -76,7 +82,6 @@
 
 	private void scanAnnotation(SAXElement element, IType type) {
 		context.getRootContext().getAnnotationKind(type); // kick it
-		AnnotationDefinition old = context.getRootContext().getAnnotation(type.getFullyQualifiedName());
 		AnnotationDefinition def = new AnnotationDefinition();
 		def.setType(type, context.getRootContext());
 
@@ -96,10 +101,101 @@
 	}
 
 	private void scanBean(SAXElement element, IType type) {
+		SeamBeanDefinition def = new SeamBeanDefinition();
+		def.setElement(element);
+		def.setType(type);
+		result.addBeanDefinition(def);
 		List<SAXElement> es = element.getChildElements();
-		//TODO
+		for (SAXElement c: es) {
+			if(!Util.isConfigRelevant(c)) continue;
+			if(Util.containsEEPackage(c.getURI())) {
+				if("replaces".equals(c.getLocalName())) {
+					def.setReplaces(c);
+					continue;
+				}
+				if("modifies".equals(c.getLocalName())) {
+					def.setModifies(c);
+					continue;
+				}
+			}
+			IType t = Util.resolveType(c, project);
+			if(t != null) {
+				IJavaAnnotation a = loadAnnotationDeclaration(element, IN_ANNOTATION_TYPE);
+				if(a != null) {
+					def.addAnnotation(a);
+				}
+				continue;
+			}
+			IMember m = null;
+			try {
+				m = Util.resolveMember(type, c);
+			} catch (JavaModelException e) {
+				CDISeamConfigCorePlugin.getDefault().logError(e);
+			}
+			if(m instanceof IField) {
+				def.addField(scanField(c, (IField)m));
+			} else if(m instanceof IMethod) {
+				def.addMethod(scanMethod(element, (IMethod)m));
+			} else {
+				result.addUnresolvedNode(c, "Cannot resolve member.");
+			}
+		}
 	}
 
+	private SeamFieldDefinition scanField(SAXElement element, IField field) {
+		SeamFieldDefinition def = new SeamFieldDefinition();
+		def.setElement(element);
+		def.setField(field);
+		List<SAXElement> es = element.getChildElements();
+		for (SAXElement c: es) {
+			if(!Util.isConfigRelevant(c)) continue;
+			if(Util.containsEEPackage(c.getURI())) {
+				if("value".equals(c.getLocalName())) {
+					//TODO do not forget to look for Inline Bean Declarations inside field values.
+					
+				}
+				
+			}
+			IType t = Util.resolveType(c, project);
+			if(t != null) {
+				IJavaAnnotation a = loadAnnotationDeclaration(element, IN_ANNOTATION_TYPE);
+				if(a != null) {
+					def.addAnnotation(a);
+				}
+				continue;
+			}
+		
+		}		
+		return def;
+	}	
+
+	private SeamMethodDefinition scanMethod(SAXElement element, IMethod method) {
+		SeamMethodDefinition def = new SeamMethodDefinition();
+		def.setElement(element);
+		def.setMethod(method);
+		List<SAXElement> es = element.getChildElements();
+		for (SAXElement c: es) {
+			if(!Util.isConfigRelevant(c)) continue;
+			if(Util.containsEEPackage(c.getURI())) {
+				if("parameters".equals(c.getLocalName())) {
+					//TODO
+					
+				}
+				
+			}
+			IType t = Util.resolveType(c, project);
+			if(t != null) {
+				IJavaAnnotation a = loadAnnotationDeclaration(element, IN_ANNOTATION_TYPE);
+				if(a != null) {
+					def.addAnnotation(a);
+				}
+				continue;
+			}
+		
+		}		
+		return def;
+	}
+
 	private IJavaAnnotation loadAnnotationDeclaration(SAXElement element, int contextKind) {
 		if(!Util.isConfigRelevant(element)) return null;
 		

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-04-25 22:35:27 UTC (rev 30835)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/util/Util.java	2011-04-26 01:12:00 UTC (rev 30836)
@@ -104,4 +104,12 @@
 		return uri.split(":");
 	}
 
+	public static boolean containsEEPackage(String uri) {
+		String[] ps = getPackages(uri);
+		for (String p: ps) if("ee".equals(p)) {
+			return true;
+		}
+		return false;
+	}
+
 }



More information about the jbosstools-commits mailing list