[jbosstools-commits] JBoss Tools SVN: r30862 - 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 Apr 26 20:56:17 EDT 2011


Author: scabanovich
Date: 2011-04-26 20:56:17 -0400 (Tue, 26 Apr 2011)
New Revision: 30862

Modified:
   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/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/SeamBeanDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java	2011-04-26 23:58:08 UTC (rev 30861)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeanDefinition.java	2011-04-27 00:56:17 UTC (rev 30862)
@@ -14,6 +14,7 @@
 import java.util.List;
 
 import org.eclipse.jdt.core.IType;
+import org.jboss.tools.cdi.seam.config.core.scanner.SAXElement;
 
 /**
  * 
@@ -39,4 +40,12 @@
 		methods.add(method);
 	}
 
+	public SeamFieldDefinition getField(String name) {
+		for (SeamFieldDefinition d: fields) {
+			SAXElement e = d.getElement();
+			if(name.equals(e.getLocalName())) return d;
+		}
+		return null;
+	}
+
 }

Modified: 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	2011-04-26 23:58:08 UTC (rev 30861)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamFieldDefinition.java	2011-04-27 00:56:17 UTC (rev 30862)
@@ -10,7 +10,13 @@
  ******************************************************************************/
 package org.jboss.tools.cdi.seam.config.core.definition;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.eclipse.jdt.core.IField;
+import org.jboss.tools.cdi.seam.config.core.scanner.SAXText;
 
 /**
  * 
@@ -18,12 +24,45 @@
  *
  */
 public class SeamFieldDefinition extends SeamMemberDefinition {
-	IField field;
+	protected IField field;
 
+	protected List<SAXText> listValue = null;
+	protected Map<SAXText, SAXText> mapValue = null;
+
 	public SeamFieldDefinition() {}
 
 	public void setField(IField field) {
 		this.field = field;
 	}
 
+	public String getValue() {
+		return listValue == null || listValue.size() == 0 ? null : listValue.get(0).getValue();
+	}
+
+	public void addValue(SAXText value) {
+		if(listValue == null) listValue = new ArrayList<SAXText>();
+		listValue.add(value);
+	}
+
+	public List<String> getListValue() {
+		List<String> result = new ArrayList<String>();
+		if(listValue != null) for (SAXText t: listValue) {
+			result.add(t.getValue());
+		}
+		return result;
+	}
+
+	public void addValue(SAXText key, SAXText value) {
+		if(mapValue == null) mapValue = new HashMap<SAXText, SAXText>();
+		mapValue.put(key, value);
+	}
+
+	public Map<String, String> getMapValue() {
+		Map<String, String> result = new HashMap<String, String>();
+		if(mapValue != null) for (SAXText t: mapValue.keySet()) {
+			result.put(t.getValue(), mapValue.get(t).getValue());
+		}
+		return result;
+	}
+
 }

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-26 23:58:08 UTC (rev 30861)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java	2011-04-27 00:56:17 UTC (rev 30862)
@@ -139,16 +139,22 @@
 		SeamFieldDefinition def = new SeamFieldDefinition();
 		def.setElement(element);
 		def.setField(field);
+		if(Util.hasText(element)) {
+			def.addValue(element.getTextNode());
+		}
 		List<SAXElement> es = element.getChildElements();
 		for (SAXElement c: es) {
 			if(!Util.isConfigRelevant(c)) continue;
-			if(Util.containsEEPackage(c)) {
-				if(Util.isValue(c)) {
+			if(Util.isValue(c)) {
+				if(Util.hasText(c)) {
+					def.addValue(c.getTextNode());
+				} else {
 					scanFieldValue(c);
-				} else if(Util.isEntry(c)) {
-					scanEntry(c);
 				}
 				continue;
+			} else if(Util.isEntry(c)) {
+				scanEntry(def, c);
+				continue;
 			}
 			IType t = Util.resolveType(c, project);
 			if(t != null) {
@@ -180,14 +186,30 @@
 		}
 	}
 
-	private void scanEntry(SAXElement element) {
+	private void scanEntry(SeamFieldDefinition def, SAXElement element) {
 		List<SAXElement> es = element.getChildElements();
+		SAXText key = null;
+		SAXText value = null;
 		for (SAXElement c: es) {
 			if(!Util.isConfigRelevant(c)) continue;
-			if(Util.isKey(c) || Util.isValue(c)) {
-				scanFieldValue(c);
+			if(Util.isKey(c)) {
+				if(Util.hasText(c)) {
+					key = c.getTextNode();
+				} else {
+					scanFieldValue(c);
+				}
 			}
+			if(Util.isValue(c)) {
+				if(Util.hasText(c)) {
+					value = c.getTextNode();
+				} else {
+					scanFieldValue(c);
+				}
+			}
 		}
+		if(key != null && value != null) {
+			def.addValue(key, value);
+		}
 	}
 
 	private SeamMethodDefinition scanMethod(SAXElement element, IMethod method) {
@@ -197,17 +219,17 @@
 		List<SAXElement> es = element.getChildElements();
 		for (SAXElement c: es) {
 			if(!Util.isConfigRelevant(c)) continue;
-			if(Util.containsEEPackage(c)) {
-				if(Util.isParameters(c)) {
-					List<SAXElement> ps = element.getChildElements();
-					for (SAXElement p: ps) {
-						SeamParameterDefinition pd = scanParameter(p);
-						if(pd != null) def.addParameter(pd);
-					}
-				} else if(Util.isArray(c)) {
-					SeamParameterDefinition pd = scanParameter(c);
+			if(Util.isParameters(c)) {
+				List<SAXElement> ps = element.getChildElements();
+				for (SAXElement p: ps) {
+					SeamParameterDefinition pd = scanParameter(p);
 					if(pd != null) def.addParameter(pd);
-				}				
+				}
+				continue;
+			} else if(Util.isArray(c)) {
+				SeamParameterDefinition pd = scanParameter(c);
+				if(pd != null) def.addParameter(pd);
+				continue;
 			}
 			IType t = Util.resolveType(c, project);
 			if(t != 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-26 23:58:08 UTC (rev 30861)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/util/Util.java	2011-04-27 00:56:17 UTC (rev 30862)
@@ -11,6 +11,7 @@
 import org.jboss.tools.cdi.core.CDICoreNature;
 import org.jboss.tools.cdi.seam.config.core.CDISeamConfigConstants;
 import org.jboss.tools.cdi.seam.config.core.scanner.SAXElement;
+import org.jboss.tools.cdi.seam.config.core.scanner.SAXText;
 
 public class Util implements CDISeamConfigConstants {
 	public static Map<String, String> EE_TYPES = new HashMap<String, String>();
@@ -145,4 +146,9 @@
 		return (keyword1.equals(n) || keyword2.equals(n)) && containsEEPackage(element);
 	}
 
+	public static boolean hasText(SAXElement element) {
+		SAXText t = element.getTextNode();
+		return t != null && t.getValue() != null && t.getValue().trim().length() > 0;
+	}
+
 }



More information about the jbosstools-commits mailing list