[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