[jbosstools-commits] JBoss Tools SVN: r30947 - 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
Thu Apr 28 18:50:02 EDT 2011


Author: scabanovich
Date: 2011-04-28 18:50:02 -0400 (Thu, 28 Apr 2011)
New Revision: 30947

Added:
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/AbstractSeamFieldDefinition.java
   trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamVirtualFieldDefinition.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/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-8813
https://issues.jboss.org/browse/JBIDE-8813

Added: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/AbstractSeamFieldDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/AbstractSeamFieldDefinition.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/AbstractSeamFieldDefinition.java	2011-04-28 22:50:02 UTC (rev 30947)
@@ -0,0 +1,64 @@
+/******************************************************************************* 
+ * 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.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jdt.core.IField;
+import org.jboss.tools.cdi.seam.config.core.scanner.SAXAttribute;
+import org.jboss.tools.cdi.seam.config.core.scanner.SAXElement;
+import org.jboss.tools.cdi.seam.config.core.scanner.SAXText;
+
+/**
+ * 
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class AbstractSeamFieldDefinition extends SeamMemberDefinition {
+	protected List<SAXText> listValue = null;
+	protected Map<SAXText, SAXText> mapValue = null;
+
+	public AbstractSeamFieldDefinition() {}
+
+	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;
+	}
+
+}


Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/AbstractSeamFieldDefinition.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-28 20:47:47 UTC (rev 30946)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java	2011-04-28 22:50:02 UTC (rev 30947)
@@ -26,6 +26,7 @@
 	Map<SAXNode, String> unresolvedNodes = new HashMap<SAXNode, String>();
 
 	Set<SeamBeanDefinition> beanDefinitions = new HashSet<SeamBeanDefinition>();
+	Set<SeamVirtualFieldDefinition> virtualFieldDefinitions = new HashSet<SeamVirtualFieldDefinition>();
 	
 	public SeamBeansDefinition() {}
 
@@ -45,4 +46,12 @@
 		return beanDefinitions;
 	}
 
+	public void addVirtualField(SeamVirtualFieldDefinition def) {
+		virtualFieldDefinitions.add(def);
+	}
+
+	public Set<SeamVirtualFieldDefinition> getVirtualFieldDefinitions() {
+		return virtualFieldDefinitions;
+	}
+
 }

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-28 20:47:47 UTC (rev 30946)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamFieldDefinition.java	2011-04-28 22:50:02 UTC (rev 30947)
@@ -10,33 +10,28 @@
  ******************************************************************************/
 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.SAXAttribute;
 import org.jboss.tools.cdi.seam.config.core.scanner.SAXElement;
-import org.jboss.tools.cdi.seam.config.core.scanner.SAXText;
 
 /**
  * 
  * @author Viacheslav Kabanovich
  *
  */
-public class SeamFieldDefinition extends SeamMemberDefinition {
+public class SeamFieldDefinition extends AbstractSeamFieldDefinition {
 	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 IField getField() {
+		return field;
+	}
+
 	public String getName() {
 		if(field != null) return field.getElementName();
 		if(getNode() instanceof SAXElement) return ((SAXElement)getNode()).getLocalName();
@@ -44,34 +39,4 @@
 		return null;
 	}
 
-	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;
-	}
-
 }

Added: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamVirtualFieldDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamVirtualFieldDefinition.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamVirtualFieldDefinition.java	2011-04-28 22:50:02 UTC (rev 30947)
@@ -0,0 +1,36 @@
+/******************************************************************************* 
+ * 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;
+import org.eclipse.jdt.core.IType;
+import org.jboss.tools.cdi.seam.config.core.scanner.SAXAttribute;
+import org.jboss.tools.cdi.seam.config.core.scanner.SAXElement;
+
+/**
+ * 
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class SeamVirtualFieldDefinition extends AbstractSeamFieldDefinition {
+	protected IType returnType;
+
+	public SeamVirtualFieldDefinition() {}
+
+	public void setType(IType returnType) {
+		this.returnType = returnType;
+	}
+
+	public IType getType() {
+		return returnType;
+	}
+
+}


Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamVirtualFieldDefinition.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-28 20:47:47 UTC (rev 30946)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SeamDefinitionBuilder.java	2011-04-28 22:50:02 UTC (rev 30947)
@@ -30,11 +30,13 @@
 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.AbstractSeamFieldDefinition;
 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.definition.SeamParameterDefinition;
+import org.jboss.tools.cdi.seam.config.core.definition.SeamVirtualFieldDefinition;
 import org.jboss.tools.cdi.seam.config.core.util.Util;
 
 /**
@@ -88,6 +90,12 @@
 		if(typeCheck.isCorrupted) return;
 		if(typeCheck.isAnnotation) {
 			scanAnnotation(element, type);
+		} else if(Util.hasProducesChild(element)) {
+			SeamVirtualFieldDefinition f = scanVirtualProducerField(element);
+			if(f != null) {
+				result.addVirtualField(f);
+			}
+			
 		} else {
 			scanBean(element, type, false);
 		}
@@ -169,10 +177,28 @@
 		return def;
 	}
 
+	private SeamVirtualFieldDefinition scanVirtualProducerField(SAXElement element) {
+		SeamVirtualFieldDefinition def = new SeamVirtualFieldDefinition();
+		def.setNode(element);
+		IType type = Util.resolveType(element, project);
+		if(type == null) {
+			result.addUnresolvedNode(element, CDISeamConfigConstants.ERROR_UNRESOLVED_TYPE);
+			return null;
+		}
+		def.setType(type);
+		scanFieldContent(def, element);
+		return def;
+	}
+
 	private SeamFieldDefinition scanField(SAXElement element, IField field) {
 		SeamFieldDefinition def = new SeamFieldDefinition();
 		def.setNode(element);
 		def.setField(field);
+		scanFieldContent(def, element);
+		return def;
+	}
+
+	private void scanFieldContent(AbstractSeamFieldDefinition def, SAXElement element) {
 		if(Util.hasText(element)) {
 			def.addValue(element.getTextNode());
 		}
@@ -198,8 +224,7 @@
 			}
 		
 		}		
-		return def;
-	}	
+	}
 
 	private SeamFieldDefinition scanField(SAXAttribute a, IField field) {
 		SeamFieldDefinition def = new SeamFieldDefinition();
@@ -213,7 +238,7 @@
 	 * Scan field value for inline bean declarations. 
 	 * @param element
 	 */
-	private void scanFieldValue(SeamFieldDefinition def, SAXElement element) {
+	private void scanFieldValue(AbstractSeamFieldDefinition def, SAXElement element) {
 		if(!Util.isConfigRelevant(element)) return;
 		List<SAXElement> es = element.getChildElements();
 		for (SAXElement c: es) {
@@ -235,7 +260,7 @@
 		}
 	}
 
-	private void scanEntry(SeamFieldDefinition def, SAXElement element) {
+	private void scanEntry(AbstractSeamFieldDefinition def, SAXElement element) {
 		List<SAXElement> es = element.getChildElements();
 		SAXText key = null;
 		SAXText value = 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-28 20:47:47 UTC (rev 30946)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/util/Util.java	2011-04-28 22:50:02 UTC (rev 30947)
@@ -11,6 +11,7 @@
 package org.jboss.tools.cdi.seam.config.core.util;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.eclipse.jdt.core.IField;
@@ -102,7 +103,7 @@
 		for (String pkg: packages) {
 			if(pkg.length() == 0) continue;
 			String typeName = null;
-			if(pkg.equals("ee")) {
+			if(pkg.equals(PACKAGE_EE)) {
 				typeName = Util.EE_TYPES.get(name);
 			} else {
 				typeName = pkg + "." + name;
@@ -186,6 +187,16 @@
 		return t != null && t.getValue() != null && t.getValue().trim().length() > 0;
 	}
 
+	public static boolean hasProducesChild(SAXElement element) {
+		List<SAXElement> cs = element.getChildElements();
+		for (SAXElement c: cs) {
+			if(containsEEPackage(c) && "Produces".equals(c.getLocalName())) {
+				return true;
+			}
+		}
+		return false;
+	}
+
 	/**
 	 * 
 	 * @param def



More information about the jbosstools-commits mailing list