[jbosstools-commits] JBoss Tools SVN: r30857 - in trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core: src/org/jboss/tools/cdi/seam/config/core and 3 other directories.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Tue Apr 26 19:11:51 EDT 2011
Author: scabanovich
Date: 2011-04-26 19:11:51 -0400 (Tue, 26 Apr 2011)
New Revision: 30857
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamParameterDefinition.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/META-INF/MANIFEST.MF
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigConstants.java
trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/ConfigDefinitionContext.java
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/SeamMemberDefinition.java
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/scanner/SAXElement.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/META-INF/MANIFEST.MF
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/META-INF/MANIFEST.MF 2011-04-26 22:46:59 UTC (rev 30856)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/META-INF/MANIFEST.MF 2011-04-26 23:11:51 UTC (rev 30857)
@@ -28,5 +28,8 @@
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-Vendor: JBoss by Red Hat
-Export-Package: org.jboss.tools.cdi.seam.config.core
+Export-Package: org.jboss.tools.cdi.seam.config.core,
+ org.jboss.tools.cdi.seam.config.core.definition,
+ org.jboss.tools.cdi.seam.config.core.scanner,
+ org.jboss.tools.cdi.seam.config.core.util
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigConstants.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigConstants.java 2011-04-26 22:46:59 UTC (rev 30856)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/CDISeamConfigConstants.java 2011-04-26 23:11:51 UTC (rev 30857)
@@ -14,14 +14,34 @@
public interface CDISeamConfigConstants extends CDIConstants {
- public static String SEAM_BEANS_XML = "seam-beans.xml";
+ public String SEAM_BEANS_XML = "seam-beans.xml";
- public static String URI_PREFIX = "urn:java:";
+ public String URI_PREFIX = "urn:java:";
//Problem id: node name was not resolved to Java type
- public static String UNRESOLVED_TYPE = "Unresolved type";
+ public String ERROR_UNRESOLVED_TYPE = "Unresolved type";
//Problem id: node was expected to be resolved to annotation type
- public static String ANNOTATION_EXPECTED = "Annotation expected";
+ public String ERROR_ANNOTATION_EXPECTED = "Annotation expected";
+ public String PACKAGE_EE = "ee";
+
+ public String KEYWORD_ARRAY = "array";
+
+ public String KEYWORD_ENTRY = "entry";
+ public String KEYWORD_E = "e";
+
+ public String KEYWORD_KEY = "key";
+ public String KEYWORD_K = "k";
+
+ public String KEYWORD_VALUE = "value";
+ public String KEYWORD_V = "v";
+
+ public String KEYWORD_REPLACES = "replaces";
+
+ public String KEYWORD_MODIFIES = "modifies";
+
+ public String KEYWORD_PARAMETERS = "parameters";
+
+ public String ATTR_DIMENSIONS = "dimensions";
}
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/ConfigDefinitionContext.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/ConfigDefinitionContext.java 2011-04-26 22:46:59 UTC (rev 30856)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/ConfigDefinitionContext.java 2011-04-26 23:11:51 UTC (rev 30857)
@@ -119,6 +119,12 @@
return result;
}
+ public SeamBeansDefinition getDefinition(IPath path) {
+ if(beanXMLs.containsKey(path)) return beanXMLs.get(path);
+ if(seambeanXMLs.containsKey(path)) return seambeanXMLs.get(path);
+ return null;
+ }
+
public void addAnnotation(String typeName, AnnotationDefinition def) {
IPath path = def.getResource().getFullPath();
// root.clean(typeName);
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-26 22:46:59 UTC (rev 30856)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamBeansDefinition.java 2011-04-26 23:11:51 UTC (rev 30857)
@@ -42,4 +42,8 @@
beanDefinitions.add(def);
}
+ public Set<SeamBeanDefinition> getBeanDefinitions() {
+ return beanDefinitions;
+ }
+
}
Modified: 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 2011-04-26 22:46:59 UTC (rev 30856)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMemberDefinition.java 2011-04-26 23:11:51 UTC (rev 30857)
@@ -15,6 +15,7 @@
import org.jboss.tools.cdi.core.IJavaAnnotation;
import org.jboss.tools.cdi.seam.config.core.scanner.SAXElement;
+import org.jboss.tools.common.text.ITextSourceReference;
/**
*
@@ -23,9 +24,9 @@
*/
public abstract class SeamMemberDefinition {
protected SAXElement element;
- SAXElement replaces = null;
- SAXElement modifies = null;
- Map<String, IJavaAnnotation> annotations = new HashMap<String, IJavaAnnotation>();
+ protected SAXElement replaces = null;
+ protected SAXElement modifies = null;
+ protected Map<String, IJavaAnnotation> annotations = new HashMap<String, IJavaAnnotation>();
public SeamMemberDefinition() {}
@@ -33,6 +34,10 @@
this.element = element;
}
+ public SAXElement getElement() {
+ return element;
+ }
+
public void setReplaces(SAXElement replaces) {
this.replaces = replaces;
}
@@ -44,4 +49,16 @@
public void addAnnotation(IJavaAnnotation a) {
annotations.put(a.getTypeName(), a);
}
+
+ public IJavaAnnotation getAnnotation(String typeName) {
+ return annotations.get(typeName);
+ }
+
+ public ITextSourceReference getReplacesLocation() {
+ return replaces == null ? null : replaces.getLocation();
+ }
+
+ public ITextSourceReference getModifiesLocation() {
+ return modifies == null ? null : modifies.getLocation();
+ }
}
Modified: 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 2011-04-26 22:46:59 UTC (rev 30856)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamMethodDefinition.java 2011-04-26 23:11:51 UTC (rev 30857)
@@ -10,6 +10,9 @@
******************************************************************************/
package org.jboss.tools.cdi.seam.config.core.definition;
+import java.util.ArrayList;
+import java.util.List;
+
import org.eclipse.jdt.core.IMethod;
/**
@@ -19,6 +22,7 @@
*/
public class SeamMethodDefinition extends SeamMemberDefinition {
IMethod method;
+ List<SeamParameterDefinition> parameters = new ArrayList<SeamParameterDefinition>();
public SeamMethodDefinition() {}
@@ -26,4 +30,8 @@
this.method = method;
}
+ public void addParameter(SeamParameterDefinition p) {
+ parameters.add(p);
+ }
+
}
Added: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamParameterDefinition.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamParameterDefinition.java (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamParameterDefinition.java 2011-04-26 23:11:51 UTC (rev 30857)
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * 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.ILocalVariable;
+import org.eclipse.jdt.core.IType;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class SeamParameterDefinition extends SeamMemberDefinition {
+ IType type;
+ String dimentions;
+
+ ILocalVariable parameter;
+
+ public SeamParameterDefinition() {}
+
+ public void setType(IType type) {
+ this.type = type;
+ }
+
+ public void setDimensions(String value) {
+ dimentions = value;
+ }
+
+ public void setParameter(ILocalVariable parameter) {
+ this.parameter = parameter;
+ }
+
+}
Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/definition/SeamParameterDefinition.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/SAXElement.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SAXElement.java 2011-04-26 22:46:59 UTC (rev 30856)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.seam.config.core/src/org/jboss/tools/cdi/seam/config/core/scanner/SAXElement.java 2011-04-26 23:11:51 UTC (rev 30857)
@@ -14,6 +14,7 @@
import java.util.List;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import org.jboss.tools.common.text.ITextSourceReference;
@@ -88,6 +89,10 @@
return attributes.get(name);
}
+ public Set<String> getAttributeNames() {
+ return attributes.keySet();
+ }
+
public void addChildElement(SAXElement child) {
child.setParent(this);
children.add(child);
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 22:46:59 UTC (rev 30856)
+++ 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:11:51 UTC (rev 30857)
@@ -2,10 +2,12 @@
import java.io.ByteArrayInputStream;
import java.util.List;
+import java.util.Set;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.IMember;
+import org.eclipse.jdt.core.IMemberValuePair;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
@@ -21,6 +23,7 @@
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.util.Util;
public class SeamDefinitionBuilder {
@@ -62,18 +65,12 @@
IType type = Util.resolveType(element, project);
if(type == null) {
- result.addUnresolvedNode(element, CDISeamConfigConstants.UNRESOLVED_TYPE);
+ result.addUnresolvedNode(element, CDISeamConfigConstants.ERROR_UNRESOLVED_TYPE);
return;
}
- boolean isAnnnotation = false;
- try {
- isAnnnotation = type.isAnnotation();
- } catch (JavaModelException e) {
- CDISeamConfigCorePlugin.getDefault().logError(e);
- result.addUnresolvedNode(element, CDISeamConfigConstants.UNRESOLVED_TYPE);
- return;
- }
- if(isAnnnotation) {
+ TypeCheck typeCheck = new TypeCheck(type, element);
+ if(typeCheck.isCorrupted) return;
+ if(typeCheck.isAnnotation) {
scanAnnotation(element, type);
} else {
scanBean(element, type);
@@ -89,9 +86,7 @@
//children should be annotation declarations.
for (SAXElement c: es) {
IJavaAnnotation a = loadAnnotationDeclaration(c, IN_ANNOTATION_TYPE);
- if(a != null) {
- def.addAnnotation(a, context.getRootContext());
- }
+ if(a != null) def.addAnnotation(a, context.getRootContext());
}
def.revalidateKind(context.getRootContext());
@@ -108,26 +103,24 @@
List<SAXElement> es = element.getChildElements();
for (SAXElement c: es) {
if(!Util.isConfigRelevant(c)) continue;
- if(Util.containsEEPackage(c.getURI())) {
- if("replaces".equals(c.getLocalName())) {
+ if(Util.containsEEPackage(c)) {
+ if(CDISeamConfigConstants.KEYWORD_REPLACES.equals(c.getLocalName())) {
def.setReplaces(c);
continue;
}
- if("modifies".equals(c.getLocalName())) {
+ if(CDISeamConfigConstants.KEYWORD_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);
- }
+ IJavaAnnotation a = loadAnnotationDeclaration(c, IN_ANNOTATION_TYPE);
+ if(a != null) def.addAnnotation(a);
continue;
}
IMember m = null;
- try {
+ if(c.getURI() != null && c.getURI().equals(element.getURI())) try {
m = Util.resolveMember(type, c);
} catch (JavaModelException e) {
CDISeamConfigCorePlugin.getDefault().logError(e);
@@ -149,19 +142,18 @@
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.
-
+ if(Util.containsEEPackage(c)) {
+ if(Util.isValue(c)) {
+ scanFieldValue(c);
+ } else if(Util.isEntry(c)) {
+ scanEntry(c);
}
-
+ continue;
}
IType t = Util.resolveType(c, project);
if(t != null) {
- IJavaAnnotation a = loadAnnotationDeclaration(element, IN_ANNOTATION_TYPE);
- if(a != null) {
- def.addAnnotation(a);
- }
+ IJavaAnnotation a = loadAnnotationDeclaration(c, IN_ANNOTATION_TYPE);
+ if(a != null) def.addAnnotation(a);
continue;
}
@@ -169,6 +161,35 @@
return def;
}
+ /**
+ * Scan field value for inline bean declarations.
+ * @param element
+ */
+ private void scanFieldValue(SAXElement element) {
+ if(!Util.isConfigRelevant(element)) return;
+ List<SAXElement> es = element.getChildElements();
+ for (SAXElement c: es) {
+ if(!Util.isConfigRelevant(c)) continue;
+ IType type = Util.resolveType(element, project);
+ if(type == null) continue;
+ TypeCheck typeCheck = new TypeCheck(type, element);
+ if(typeCheck.isCorrupted) return;
+ if(!typeCheck.isAnnotation) {
+ scanBean(element, type);
+ }
+ }
+ }
+
+ private void scanEntry(SAXElement element) {
+ List<SAXElement> es = element.getChildElements();
+ for (SAXElement c: es) {
+ if(!Util.isConfigRelevant(c)) continue;
+ if(Util.isKey(c) || Util.isValue(c)) {
+ scanFieldValue(c);
+ }
+ }
+ }
+
private SeamMethodDefinition scanMethod(SAXElement element, IMethod method) {
SeamMethodDefinition def = new SeamMethodDefinition();
def.setElement(element);
@@ -176,19 +197,22 @@
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
-
- }
-
+ 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(pd != null) def.addParameter(pd);
+ }
}
IType t = Util.resolveType(c, project);
if(t != null) {
- IJavaAnnotation a = loadAnnotationDeclaration(element, IN_ANNOTATION_TYPE);
- if(a != null) {
- def.addAnnotation(a);
- }
+ IJavaAnnotation a = loadAnnotationDeclaration(c, IN_ANNOTATION_TYPE);
+ if(a != null) def.addAnnotation(a);
continue;
}
@@ -196,35 +220,102 @@
return def;
}
+ private SeamParameterDefinition scanParameter(SAXElement element) {
+ if(!Util.isConfigRelevant(element)) return null;
+ SeamParameterDefinition def = new SeamParameterDefinition();
+ def.setElement(element);
+ if(Util.isArray(element)) {
+ if(element.hasAttribute(CDISeamConfigConstants.ATTR_DIMENSIONS)) {
+ def.setDimensions(element.getAttribute(CDISeamConfigConstants.ATTR_DIMENSIONS).getValue());
+ }
+ List<SAXElement> es = element.getChildElements();
+ for (SAXElement c: es) {
+ if(!Util.isConfigRelevant(c)) continue;
+ IType type = Util.resolveType(c, project);
+ if(type == null) {
+ result.addUnresolvedNode(element, CDISeamConfigConstants.ERROR_UNRESOLVED_TYPE);
+ continue;
+ }
+ TypeCheck typeCheck = new TypeCheck(type, c);
+ if(typeCheck.isCorrupted) continue;
+ if(typeCheck.isAnnotation) {
+ IJavaAnnotation a = loadAnnotationDeclaration(c, IN_ANNOTATION_TYPE);
+ if(a != null) def.addAnnotation(a);
+ } else {
+ def.setType(type);
+ }
+ }
+ } else {
+ IType type = Util.resolveType(element, project);
+ if(type == null) {
+ result.addUnresolvedNode(element, CDISeamConfigConstants.ERROR_UNRESOLVED_TYPE);
+ return null;
+ }
+ def.setType(type);
+ List<SAXElement> es = element.getChildElements();
+ for (SAXElement c: es) {
+ if(!Util.isConfigRelevant(c)) {
+ continue; //report?
+ }
+ if(Util.containsEEPackage(c)) continue; //we are not interested yet
+ IType t = Util.resolveType(c, project);
+ if(t != null) {
+ IJavaAnnotation a = loadAnnotationDeclaration(c, 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;
IType type = Util.resolveType(element, project);
if(type == null) {
if(contextKind == IN_ANNOTATION_TYPE) {
- result.addUnresolvedNode(element, CDISeamConfigConstants.UNRESOLVED_TYPE);
+ result.addUnresolvedNode(element, CDISeamConfigConstants.ERROR_UNRESOLVED_TYPE);
}
return null;
}
- boolean isAnnnotation = false;
- try {
- isAnnnotation = type.isAnnotation();
- } catch (JavaModelException e) {
- CDISeamConfigCorePlugin.getDefault().logError(e);
- result.addUnresolvedNode(element, CDISeamConfigConstants.UNRESOLVED_TYPE);
- return null;
- }
- if(isAnnnotation) {
+ TypeCheck typeCheck = new TypeCheck(type, element);
+ if(typeCheck.isCorrupted) return null;
+ if(typeCheck.isAnnotation) {
context.getRootContext().getAnnotationKind(type); // kick it
+ String value = null;
+ SAXText text = element.getTextNode();
+ if(text != null && text.getValue() != null && text.getValue().trim().length() > 0) {
+ value = text.getValue();
+ }
AnnotationLiteral literal = new AnnotationLiteral(resource,
element.getLocation().getStartPosition(), element.getLocation().getLength(),
- null, 0, type);
- //TODO read and add member values.
+ value, IMemberValuePair.K_STRING, type);
+ Set<String> ns = element.getAttributeNames();
+ for (String n: ns) {
+ String v = element.getAttribute(n).getValue();
+ literal.addMemberValuePair(n, v, IMemberValuePair.K_STRING);
+ }
return literal;
} else if(contextKind == IN_ANNOTATION_TYPE) {
- result.addUnresolvedNode(element, CDISeamConfigConstants.ANNOTATION_EXPECTED);
+ result.addUnresolvedNode(element, CDISeamConfigConstants.ERROR_ANNOTATION_EXPECTED);
}
return null;
}
+ class TypeCheck {
+ boolean isCorrupted = false;
+ boolean isAnnotation = false;
+ TypeCheck(IType type, SAXElement element) {
+ try {
+ isAnnotation = type.isAnnotation();
+ } catch (JavaModelException e) {
+ CDISeamConfigCorePlugin.getDefault().logError(e);
+ result.addUnresolvedNode(element, CDISeamConfigConstants.ERROR_UNRESOLVED_TYPE);
+ isCorrupted = true;
+ }
+ }
+ }
+
}
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 22:46:59 UTC (rev 30856)
+++ 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:11:51 UTC (rev 30857)
@@ -12,7 +12,7 @@
import org.jboss.tools.cdi.seam.config.core.CDISeamConfigConstants;
import org.jboss.tools.cdi.seam.config.core.scanner.SAXElement;
-public class Util {
+public class Util implements CDISeamConfigConstants {
public static Map<String, String> EE_TYPES = new HashMap<String, String>();
static {
@@ -104,12 +104,45 @@
return uri.split(":");
}
+ public static boolean containsEEPackage(SAXElement element) {
+ return containsEEPackage(element.getURI());
+ }
+
public static boolean containsEEPackage(String uri) {
String[] ps = getPackages(uri);
- for (String p: ps) if("ee".equals(p)) {
+ for (String p: ps) if(CDISeamConfigConstants.PACKAGE_EE.equals(p)) {
return true;
}
return false;
}
+ public static boolean isArray(SAXElement element) {
+ return isKeyword(element, KEYWORD_ARRAY);
+ }
+
+ public static boolean isEntry(SAXElement element) {
+ return isKeyword(element, KEYWORD_ENTRY, KEYWORD_E);
+ }
+
+ public static boolean isKey(SAXElement element) {
+ return isKeyword(element, KEYWORD_KEY, KEYWORD_K);
+ }
+
+ public static boolean isValue(SAXElement element) {
+ return isKeyword(element, KEYWORD_VALUE, KEYWORD_V);
+ }
+
+ public static boolean isParameters(SAXElement element) {
+ return isKeyword(element, KEYWORD_PARAMETERS);
+ }
+
+ public static boolean isKeyword(SAXElement element, String keyword) {
+ return keyword.equals(element.getLocalName()) && containsEEPackage(element);
+ }
+
+ public static boolean isKeyword(SAXElement element, String keyword1, String keyword2) {
+ String n = element.getLocalName();
+ return (keyword1.equals(n) || keyword2.equals(n)) && containsEEPackage(element);
+ }
+
}
More information about the jbosstools-commits
mailing list