Author: scabanovich
Date: 2009-12-02 10:09:30 -0500 (Wed, 02 Dec 2009)
New Revision: 18996
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/scanner/CDIBuilderDelegate.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreBuilder.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreNature.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/ICDIBuilderDelegate.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/scanner/lib/ClassPathMonitor.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-4943
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreBuilder.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreBuilder.java 2009-12-02
15:08:33 UTC (rev 18995)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreBuilder.java 2009-12-02
15:09:30 UTC (rev 18996)
@@ -11,10 +11,14 @@
package org.jboss.tools.cdi.core;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceDelta;
@@ -22,7 +26,17 @@
import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
+import org.jboss.tools.cdi.internal.core.scanner.CDIBuilderDelegate;
+import org.jboss.tools.common.EclipseUtil;
+import org.jboss.tools.common.model.plugin.ModelPlugin;
+import org.jboss.tools.common.model.project.ProjectHome;
+import org.jboss.tools.common.model.util.EclipseResourceUtil;
public class CDICoreBuilder extends IncrementalProjectBuilder {
public static String BUILDER_ID = "org.jboss.tools.cdi.core.cdibuilder";
@@ -32,7 +46,8 @@
static Set<ICDIBuilderDelegate> getDelegates() {
if(delegates == null) {
delegates = new HashSet<ICDIBuilderDelegate>();
- //TODO populate
+ //TODO populate; extension point will be used
+ delegates.add(new CDIBuilderDelegate()); //default
}
return delegates;
}
@@ -74,6 +89,7 @@
protected IProject[] build(int kind, Map args, IProgressMonitor monitor)
throws CoreException {
+ resourceVisitor = null;
findDelegate();
if(getDelegate() == null) {
return null;
@@ -183,10 +199,91 @@
}
class CDIResourceVisitor implements IResourceVisitor {
+ IPath[] outs = new IPath[0];
+ IPath[] srcs = new IPath[0];
+ IPath webinf = null;
+
+ CDIResourceVisitor() {
+ webinf = ProjectHome.getWebInfPath(getProject());
+ getJavaSourceRoots(getProject());
+ }
+ void getJavaSourceRoots(IProject project) {
+ IJavaProject javaProject = EclipseResourceUtil.getJavaProject(project);
+ if(javaProject == null) return;
+ List<IPath> ps = new ArrayList<IPath>();
+ List<IPath> os = new ArrayList<IPath>();
+ try {
+ IPath output = javaProject.getOutputLocation();
+ if(output != null) os.add(output);
+ IClasspathEntry[] es = javaProject.getResolvedClasspath(true);
+ for (int i = 0; i < es.length; i++) {
+ if(es[i].getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+ IResource findMember =
ModelPlugin.getWorkspace().getRoot().findMember(es[i].getPath());
+ if(findMember != null && findMember.exists()) {
+ ps.add(findMember.getFullPath());
+ }
+ IPath out = es[i].getOutputLocation();
+ if(out != null && !os.contains(out)) {
+ os.add(out);
+ }
+ }
+ }
+ srcs = ps.toArray(new IPath[0]);
+ outs = os.toArray(new IPath[0]);
+ } catch(CoreException ce) {
+ CDICorePlugin.getDefault().logError("Error while locating java source roots for
" + project, ce);
+ }
+ }
+
public boolean visit(IResource resource) throws CoreException {
- // TODO
- return false;
+ IPath path = resource.getFullPath();
+ if(resource instanceof IFile) {
+ IFile f = (IFile)resource;
+ for (int i = 0; i < outs.length; i++) {
+ if(outs[i].isPrefixOf(path)) {
+ return false;
+ }
+ }
+ for (int i = 0; i < srcs.length; i++) {
+ if(srcs[i].isPrefixOf(path)) {
+ if(f.getName().endsWith(".java")) {
+ ICompilationUnit unit = EclipseUtil.getCompilationUnit(f);
+ builderDelegate.build(f, unit, getCDICoreNature());
+ }
+ return false;
+ }
+ }
+ if(webinf != null && webinf.isPrefixOf(path)) {
+ if(f.getName().equals("beans.xml")) {
+ //TODO
+ }
+ }
+ }
+
+ if(resource instanceof IFolder) {
+ for (int i = 0; i < outs.length; i++) {
+ if(outs[i].isPrefixOf(path)) {
+ return false;
+ }
+ }
+ for (int i = 0; i < srcs.length; i++) {
+ if(srcs[i].isPrefixOf(path) || path.isPrefixOf(srcs[i])) {
+ return true;
+ }
+ }
+ if(webinf != null) {
+ if(webinf.isPrefixOf(path) || path.isPrefixOf(webinf)) {
+ return true;
+ }
+ }
+ if(resource == resource.getProject()) {
+ return true;
+ }
+ return false;
+ }
+ //return true to continue visiting children.
+ return true;
}
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreNature.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreNature.java 2009-12-02
15:08:33 UTC (rev 18995)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreNature.java 2009-12-02
15:09:30 UTC (rev 18996)
@@ -53,6 +53,7 @@
public void setProject(IProject project) {
this.project = project;
+ classPath.init();
}
public void setCDIProject(ICDIProject cdiProject) {
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/ICDIBuilderDelegate.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/ICDIBuilderDelegate.java 2009-12-02
15:08:33 UTC (rev 18995)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/ICDIBuilderDelegate.java 2009-12-02
15:09:30 UTC (rev 18996)
@@ -12,6 +12,7 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
+import org.eclipse.jdt.core.ICompilationUnit;
/**
* Builder delegate performs build for specific kind of cdi project.
@@ -29,6 +30,7 @@
public Class<? extends ICDIProject> getProjectImplementationClass();
+ public void build(IFile file, ICompilationUnit unit, CDICoreNature projectNature);
public void build(IFile file, CDICoreNature projectNature);
}
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java 2009-12-02
15:09:30 UTC (rev 18996)
@@ -0,0 +1,127 @@
+package org.jboss.tools.cdi.internal.core.impl;
+
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.IType;
+import org.jboss.tools.cdi.core.IAnnotationDeclaration;
+import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.core.ICDIProject;
+import org.jboss.tools.cdi.core.IClassBean;
+import org.jboss.tools.cdi.core.IInjectionPoint;
+import org.jboss.tools.cdi.core.IObserverMethod;
+import org.jboss.tools.common.text.INodeReference;
+
+public class CDIProject implements ICDIProject {
+
+ public List<INodeReference> getAlternativeClasses() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<INodeReference> getAlternativeStereotypes() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<INodeReference> getAlternatives(String fullQualifiedTypeName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public IClassBean getBeanClass(IType type) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Set<IBean> getBeans(String name,
+ boolean attemptToResolveAmbiguousNames) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Set<IBean> getBeans(boolean attemptToResolveAmbiguousDependency,
+ IType beanType, IAnnotationDeclaration... qualifiers) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Set<IBean> getBeans(IInjectionPoint injectionPoints) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Set<IBean> getBeans(IPath path) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<INodeReference> getDecoratorClasses() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<INodeReference> getDecoratorClasses(String fullQualifiedTypeName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<INodeReference> getInterceptorClasses() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<INodeReference> getInterceptorClasses(
+ String fullQualifiedTypeName) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Set<IType> getQualifierTypes() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Set<IType> getStereotypes() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean isNormalScope(IType annotationType) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean isPassivatingScope(IType annotationType) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean isQualifier(IType annotationType) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean isScope(IType annotationType) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean isStereotype(IType annotationType) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public Set<IBean> resolve(Set<IBean> beans) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Set<IObserverMethod> resolveObserverMethods(
+ IInjectionPoint injectionPoint) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/scanner/CDIBuilderDelegate.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/scanner/CDIBuilderDelegate.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/scanner/CDIBuilderDelegate.java 2009-12-02
15:09:30 UTC (rev 18996)
@@ -0,0 +1,59 @@
+package org.jboss.tools.cdi.internal.core.scanner;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jdt.core.IAnnotation;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.jboss.tools.cdi.core.CDICoreNature;
+import org.jboss.tools.cdi.core.ICDIBuilderDelegate;
+import org.jboss.tools.cdi.core.ICDIProject;
+import org.jboss.tools.cdi.internal.core.impl.CDIProject;
+import org.jboss.tools.common.model.util.EclipseJavaUtil;
+
+public class CDIBuilderDelegate implements ICDIBuilderDelegate {
+
+ public int computeRelevance(IProject project) {
+ //nothing to compute, builder works only if cdi nature is present
+ return 1;
+ }
+
+ public String getID() {
+ return getClass().getName();
+ }
+
+ public Class<? extends ICDIProject> getProjectImplementationClass() {
+ return CDIProject.class;
+ }
+
+ public void build(IFile file, CDICoreNature projectNature) {
+ IProject project = projectNature.getProject();
+
+
+ }
+
+ public void build(IFile file, ICompilationUnit unit, CDICoreNature projectNature) {
+ if(unit != null) {
+ try {
+ IType[] types = unit.getTypes();
+ if(types != null) {
+ for (IType type: types) {
+ if(type.isAnnotation()) {
+ IAnnotation[] as = type.getAnnotations();
+ for (IAnnotation a: as) {
+ String name = a.getElementName();
+ String qName = EclipseJavaUtil.resolveType(type, name);
+ System.out.println(qName);
+ }
+ }
+ }
+ }
+ } catch (JavaModelException e) {
+ e.printStackTrace();
+ }
+ } else {
+
+ }
+ }
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/scanner/CDIBuilderDelegate.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/scanner/lib/ClassPathMonitor.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/scanner/lib/ClassPathMonitor.java 2009-12-02
15:08:33 UTC (rev 18995)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/scanner/lib/ClassPathMonitor.java 2009-12-02
15:09:30 UTC (rev 18996)
@@ -10,18 +10,19 @@
******************************************************************************/
package org.jboss.tools.cdi.internal.core.scanner.lib;
+import org.eclipse.core.resources.IProject;
import org.jboss.tools.cdi.core.CDICoreNature;
+import org.jboss.tools.common.model.project.ext.AbstractClassPathMonitor;
+import org.jboss.tools.common.model.util.EclipseResourceUtil;
-//TODO implement
-public class ClassPathMonitor {
+public class ClassPathMonitor extends AbstractClassPathMonitor<CDICoreNature>{
public ClassPathMonitor(CDICoreNature project) {
-
+ this.project = project;
}
- public boolean update() {
- //TODO
- return true;
+ public void init() {
+ model = EclipseResourceUtil.createObjectForResource(getProjectResource()).getModel();
}
public void validateProjectDependencies() {
@@ -37,8 +38,8 @@
return false;
}
- public void clean() {
- //TODO
+ public IProject getProjectResource() {
+ return project.getProject();
}
}