[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