Author: scabanovich
Date: 2011-04-05 19:59:23 -0400 (Tue, 05 Apr 2011)
New Revision: 30347
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IDefinitionContext.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IRootDefinitionContext.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/IDefinitionContextExtension.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IBuildParticipantFeature.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/extension/CDIExtensionFactory.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionManager.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IProcessAnnotatedTypeFeature.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractMemberDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationMemberDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/DefinitionContext.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/FieldDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/MethodDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/PackageDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/TypeDefinition.java
Log:
JBIDE-3120
https://issues.jboss.org/browse/JBIDE-3120
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 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreBuilder.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -12,6 +12,7 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -38,6 +39,8 @@
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IType;
+import org.jboss.tools.cdi.core.extension.IDefinitionContextExtension;
+import org.jboss.tools.cdi.core.extension.feature.IBuildParticipantFeature;
import org.jboss.tools.cdi.internal.core.impl.definition.AnnotationHelper;
import org.jboss.tools.cdi.internal.core.scanner.CDIBuilderDelegate;
import org.jboss.tools.cdi.internal.core.scanner.FileSet;
@@ -66,6 +69,8 @@
CDIResourceVisitor resourceVisitor = null;
+ Set<IBuildParticipantFeature> buildParticipants = null;
+
public CDICoreBuilder() {}
CDICoreNature getCDICoreNature() {
@@ -109,6 +114,7 @@
if(n == null) {
return null;
}
+
if(n.hasNoStorage()) {
kind = FULL_BUILD;
}
@@ -137,12 +143,32 @@
}
n.getTypeFactory().clean();
+
+ //1. Check class path.
+ boolean isClassPathUpdated = n.getClassPath().update();
+
+ Map<String, XModelObject> newJars = new HashMap<String, XModelObject>();
+ if(isClassPathUpdated) {
+ n.getClassPath().setSrcs(getResourceVisitor().srcs);
+
+ //2. Update class path.
+ newJars = n.getClassPath().process();
+ //3. Install extensions.
+ buildParticipants = n.getExtensionManager().getBuildParticipantFeature();
+ Set<IDefinitionContextExtension> es = new
HashSet<IDefinitionContextExtension>();
+ for (IBuildParticipantFeature p: buildParticipants) {
+ IDefinitionContextExtension e = p.getContext();
+ if(e != null) es.add(e);
+ }
+ n.getDefinitions().setExtensions(es);
+ }
+
+ //4. Create working copy of context.
n.getDefinitions().newWorkingCopy(kind == FULL_BUILD);
- if(n.getClassPath().update()) {
- n.getClassPath().setSrcs(getResourceVisitor().srcs);
- Map<String, XModelObject> newJars = n.getClassPath().process();
+ //5. Build bean definitions.
+ if(isClassPathUpdated) {
buildJars(newJars);
n.getClassPath().validateProjectDependencies();
@@ -163,6 +189,7 @@
}
}
+ // 6. Save created definitions to project context and build beans.
getCDICoreNature().getDefinitions().applyWorkingCopy();
long end = System.currentTimeMillis();
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IDefinitionContext.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IDefinitionContext.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IDefinitionContext.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * 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.core;
+
+import org.eclipse.core.runtime.IPath;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public interface IDefinitionContext {
+
+ /**
+ * Returns existing working copy of original context, or this object if it is a working
copy.
+ *
+ * @return
+ */
+ public IDefinitionContext getWorkingCopy();
+
+ /**
+ * Creates copy of this object and makes it the working copy bounded to this object.
+ *
+ * @param forFullBuild
+ */
+ public void newWorkingCopy(boolean forFullBuild);
+
+ /**
+ * Submits loaded definitions to original context.
+ */
+ public void applyWorkingCopy();
+
+ /**
+ * Removes all definitions.
+ */
+ public void clean();
+
+ /**
+ * Removes difinitions loaded from path.
+ *
+ * @param path
+ */
+ public void clean(IPath path);
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IDefinitionContext.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IRootDefinitionContext.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IRootDefinitionContext.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IRootDefinitionContext.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * 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.core;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.IType;
+import org.jboss.tools.cdi.internal.core.impl.definition.AnnotationDefinition;
+
+/**
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public interface IRootDefinitionContext extends IDefinitionContext {
+
+ /**
+ * Returns cdi project for which this context is created.
+ *
+ * @return
+ */
+ public CDICoreNature getProject();
+
+ /**
+ * Registers path in context so that when its parent resource is removed from project,
+ * definitions load from that path should be cleaned from context.
+ *
+ * @param file
+ */
+ public void addToParents(IPath file);
+
+ public int getAnnotationKind(IType annotationType);
+
+ public AnnotationDefinition getAnnotation(String fullyQualifiedName);
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IRootDefinitionContext.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionFactory.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionFactory.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionFactory.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -21,6 +21,7 @@
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.Platform;
import org.jboss.tools.cdi.core.CDICorePlugin;
+import org.jboss.tools.cdi.core.extension.feature.IBuildParticipantFeature;
import org.jboss.tools.cdi.core.extension.feature.IProcessAnnotatedTypeFeature;
/**
@@ -44,7 +45,8 @@
public static String POINT_ID = "org.jboss.tools.cdi.core.cdiextensions";
public static Class<?>[] FEATURES = {
- IProcessAnnotatedTypeFeature.class,
+ IBuildParticipantFeature.class,
+ IProcessAnnotatedTypeFeature.class,
};
public static CDIExtensionFactory getInstance() {
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionManager.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionManager.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionManager.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -17,6 +17,7 @@
import java.util.Set;
import org.jboss.tools.cdi.core.CDICoreNature;
+import org.jboss.tools.cdi.core.extension.feature.IBuildParticipantFeature;
import org.jboss.tools.cdi.core.extension.feature.IProcessAnnotatedTypeFeature;
/**
@@ -129,6 +130,17 @@
return result;
}
+ public Set<IBuildParticipantFeature> getBuildParticipantFeature() {
+ Set<IBuildParticipantFeature> result = featureStorage.buildParticipant;
+ if(result == null) {
+ featureStorage.buildParticipant = result =
getFeature(IBuildParticipantFeature.class);
+ for (IBuildParticipantFeature f: result) {
+ f.setProject(n);
+ }
+ }
+ return result;
+ }
+
private <F extends Object> Set<F> getFeature(Class<F> cls) {
Set<F> result = new HashSet<F>();
Set<ICDIExtension> extensions = getExtensions(cls);
@@ -144,10 +156,12 @@
}
class FeatureStorage {
+ Set<IBuildParticipantFeature> buildParticipant = null;
Set<IProcessAnnotatedTypeFeature> processAnnotatedType = null;
void clean() {
processAnnotatedType = null;
+ buildParticipant = null;
}
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/IDefinitionContextExtension.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/IDefinitionContextExtension.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/IDefinitionContextExtension.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * 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.core.extension;
+
+import org.jboss.tools.cdi.core.IDefinitionContext;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
+
+/**
+ * Context to keep definitions loaded by CDI extensions.
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public interface IDefinitionContextExtension extends IDefinitionContext {
+
+ public void setRootContext(IRootDefinitionContext context);
+
+ /**
+ * Returns the entire context of CDI project.
+ *
+ * @return
+ */
+ public IRootDefinitionContext getRootContext();
+
+ /**
+ * Returns existing working copy of original context, or this object if it is a working
copy.
+ *
+ * @return
+ */
+ public IDefinitionContextExtension getWorkingCopy();
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/IDefinitionContextExtension.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IBuildParticipantFeature.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IBuildParticipantFeature.java
(rev 0)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IBuildParticipantFeature.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * 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.core.extension.feature;
+
+import org.jboss.tools.cdi.core.CDICoreNature;
+import org.jboss.tools.cdi.core.extension.IDefinitionContextExtension;
+
+/**
+ * This feature includes BeforeBeanDiscovery event of CDI runtime, but also it should
provide
+ * facilities for incremental build and clean of project at design time.
+ *
+ * @author Viacheslav Kabanovich
+ *
+ */
+public interface IBuildParticipantFeature {
+
+ public void setProject(CDICoreNature n);
+
+ public void buildIsAboutToBegin();
+
+ public IDefinitionContextExtension getContext();
+
+}
Property changes on:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IBuildParticipantFeature.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IProcessAnnotatedTypeFeature.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IProcessAnnotatedTypeFeature.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IProcessAnnotatedTypeFeature.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -1,16 +1,17 @@
-/**
- * This feature corresponds to runtime feature
- * javax.enterprise.inject.spi.ProcessAnnotatedType.setAnnotatedType()
- *
- * This feature is invoked by bean when it computes its name.
- * The first non-null value is accepted.
+/*******************************************************************************
+ * 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
*
- * @author Viacheslav Kabanovich
- *
- */
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
package org.jboss.tools.cdi.core.extension.feature;
-import org.jboss.tools.cdi.internal.core.impl.definition.DefinitionContext;
+
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
import org.jboss.tools.cdi.internal.core.impl.definition.TypeDefinition;
/**
@@ -28,6 +29,6 @@
* @param typeDefinition
* @param context
*/
- public void processAnnotatedType(TypeDefinition typeDefinition, DefinitionContext
context);
+ public void processAnnotatedType(TypeDefinition typeDefinition, IRootDefinitionContext
context);
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractMemberDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractMemberDefinition.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractMemberDefinition.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -27,6 +27,7 @@
import org.jboss.tools.cdi.core.IAnnotated;
import org.jboss.tools.cdi.core.IAnnotationDeclaration;
import org.jboss.tools.cdi.core.IJavaAnnotation;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
import org.jboss.tools.cdi.internal.core.impl.InterceptorBindingDeclaration;
import org.jboss.tools.cdi.internal.core.impl.JavaAnnotation;
@@ -49,7 +50,7 @@
public AbstractMemberDefinition() {}
- protected void setAnnotatable(IAnnotatable member, IType contextType, DefinitionContext
context) {
+ protected void setAnnotatable(IAnnotatable member, IType contextType,
IRootDefinitionContext context) {
this.member = member;
try {
init(contextType, context);
@@ -76,7 +77,7 @@
return project.getDefinitions().getPackageDefinition(packageName);
}
- protected void init(IType contextType, DefinitionContext context) throws CoreException
{
+ protected void init(IType contextType, IRootDefinitionContext context) throws
CoreException {
project = context.getProject();
resource = ((IJavaElement)member).getResource();
IAnnotation[] ts = member.getAnnotations();
@@ -86,7 +87,7 @@
}
}
- public void addAnnotation(IJavaAnnotation ja, DefinitionContext context) {
+ public void addAnnotation(IJavaAnnotation ja, IRootDefinitionContext context) {
AnnotationDeclaration a = new AnnotationDeclaration();
a.setProject(context.getProject());
a.setDeclaration(ja);
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -21,6 +21,7 @@
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.SourceRange;
import org.jboss.tools.cdi.core.IParametedType;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
import org.jboss.tools.cdi.internal.core.impl.ParametedType;
import org.jboss.tools.common.util.FileUtil;
@@ -60,12 +61,12 @@
return type;
}
- public void setType(IType type, DefinitionContext context) {
+ public void setType(IType type, IRootDefinitionContext context) {
super.setAnnotatable(type, type, context);
}
@Override
- protected void init(IType contextType, DefinitionContext context) throws CoreException
{
+ protected void init(IType contextType, IRootDefinitionContext context) throws
CoreException {
this.type = contextType;
super.init(contextType, context);
qualifiedName = getType().getFullyQualifiedName();
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationDefinition.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationDefinition.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -20,6 +20,7 @@
import org.eclipse.jdt.core.IType;
import org.jboss.tools.cdi.core.CDIConstants;
import org.jboss.tools.cdi.core.IAnnotationDeclaration;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
/**
@@ -56,7 +57,7 @@
}
@Override
- protected void init(IType contextType, DefinitionContext context) throws CoreException
{
+ protected void init(IType contextType, IRootDefinitionContext context) throws
CoreException {
super.init(contextType, context);
if(annotations.isEmpty()) {
//TODO check super ?
@@ -98,7 +99,7 @@
}
}
- void initMemberDefinitions(IType contextType, DefinitionContext context) throws
CoreException {
+ void initMemberDefinitions(IType contextType, IRootDefinitionContext context) throws
CoreException {
IMethod[] ms = getType().getMethods();
for (int i = 0; i < ms.length; i++) {
AnnotationMemberDefinition m = new AnnotationMemberDefinition();
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationMemberDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationMemberDefinition.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AnnotationMemberDefinition.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -12,6 +12,7 @@
import org.eclipse.jdt.core.IMethod;
import org.jboss.tools.cdi.core.CDIConstants;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
/**
@@ -33,7 +34,7 @@
return annotationDefinition;
}
- public void setMethod(IMethod method, DefinitionContext context) {
+ public void setMethod(IMethod method, IRootDefinitionContext context) {
this.method = method;
setAnnotatable(method, method.getDeclaringType(), context);
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/DefinitionContext.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/DefinitionContext.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/DefinitionContext.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -21,6 +21,8 @@
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IType;
import org.jboss.tools.cdi.core.CDICoreNature;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
+import org.jboss.tools.cdi.core.extension.IDefinitionContextExtension;
import org.jboss.tools.cdi.core.extension.feature.IProcessAnnotatedTypeFeature;
import org.jboss.tools.common.model.util.EclipseResourceUtil;
@@ -29,7 +31,7 @@
* @author Viacheslav Kabanovich
*
*/
-public class DefinitionContext {
+public class DefinitionContext implements IRootDefinitionContext {
protected CDICoreNature project;
protected IJavaProject javaProject;
@@ -44,15 +46,30 @@
private Map<IPath, BeansXMLDefinition> beanXMLs = new HashMap<IPath,
BeansXMLDefinition>();
+ Set<IDefinitionContextExtension> extensions = new
HashSet<IDefinitionContextExtension>();
+
private DefinitionContext workingCopy;
private DefinitionContext original;
public DefinitionContext() {}
+ public void setExtensions(Set<IDefinitionContextExtension> extensions) {
+ this.extensions.clear();
+ this.extensions.addAll(extensions);
+ for (IDefinitionContextExtension e: extensions) e.setRootContext(this);
+ }
+
private DefinitionContext copy(boolean clean) {
DefinitionContext copy = new DefinitionContext();
copy.project = project;
copy.javaProject = javaProject;
+ copy.extensions = new HashSet<IDefinitionContextExtension>();
+ for (IDefinitionContextExtension e: extensions) {
+ e.newWorkingCopy(clean);
+ IDefinitionContextExtension ecopy = e.getWorkingCopy();
+ ecopy.setRootContext(copy);
+ copy.extensions.add(ecopy);
+ }
if(!clean) {
copy.types.addAll(types);
copy.typeDefinitions.putAll(typeDefinitions);
@@ -145,7 +162,7 @@
addToParents(path);
}
- private void addToParents(IPath file) {
+ public void addToParents(IPath file) {
if(file == null) return;
if(file.segmentCount() < 2) return;
IPath q = file;
@@ -176,6 +193,8 @@
synchronized (beanXMLs) {
beanXMLs.clear();
}
+
+ for (IDefinitionContextExtension e: extensions) e.clean();
}
public void clean(IPath path) {
@@ -206,6 +225,8 @@
} else {
removeFromParents(path);
}
+
+ for (IDefinitionContextExtension e: extensions) e.clean(path);
}
void removeFromParents(IPath file) {
@@ -326,6 +347,10 @@
}
}
}
+
+ for (IDefinitionContextExtension e: extensions) {
+ e.applyWorkingCopy();
+ }
project.getDelegate().update();
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/FieldDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/FieldDefinition.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/FieldDefinition.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -11,6 +11,7 @@
package org.jboss.tools.cdi.internal.core.impl.definition;
import org.eclipse.jdt.core.IField;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
import org.jboss.tools.cdi.core.ITypeDeclaration;
/**
@@ -24,7 +25,7 @@
public FieldDefinition() {}
- public void setField(IField field, DefinitionContext context) {
+ public void setField(IField field, IRootDefinitionContext context) {
this.field = field;
setAnnotatable(field, field.getDeclaringType(), context);
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/MethodDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/MethodDefinition.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/MethodDefinition.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.cdi.internal.core.impl.definition;
+
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -24,10 +25,10 @@
import org.jboss.tools.cdi.core.IAnnotationDeclaration;
import org.jboss.tools.cdi.core.IInterceptorBinding;
import org.jboss.tools.cdi.core.IInterceptorBindingDeclaration;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
import org.jboss.tools.cdi.core.IStereotypeDeclaration;
import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
import org.jboss.tools.cdi.internal.core.impl.ClassBean;
-import org.jboss.tools.cdi.internal.core.impl.InterceptorBindingDeclaration;
import org.jboss.tools.cdi.internal.core.impl.ParametedType;
import org.jboss.tools.common.model.project.ext.impl.ValueInfo;
import org.jboss.tools.common.model.util.EclipseJavaUtil;
@@ -45,7 +46,7 @@
public MethodDefinition() {}
- public void setMethod(IMethod method, DefinitionContext context) {
+ public void setMethod(IMethod method, IRootDefinitionContext context) {
this.method = method;
setAnnotatable(method, method.getDeclaringType(), context);
}
@@ -58,7 +59,7 @@
return isConstructor;
}
- protected void init(IType contextType, DefinitionContext context) throws CoreException
{
+ protected void init(IType contextType, IRootDefinitionContext context) throws
CoreException {
super.init(contextType, context);
isConstructor = method.isConstructor();
//TODO process parameters for disposers and observers
@@ -69,7 +70,7 @@
return getProducesAnnotation() != null || getInjectAnnotation() != null;
}
- void loadParamDefinitions(IType contextType, DefinitionContext context) throws
CoreException {
+ void loadParamDefinitions(IType contextType, IRootDefinitionContext context) throws
CoreException {
if(method == null) return;
boolean parametersAreInjectionPoints = parametersAreInjectionPoints();
String[] parameterNames = method.getParameterNames();
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/PackageDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/PackageDefinition.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/PackageDefinition.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -15,6 +15,7 @@
import org.eclipse.jdt.core.IPackageDeclaration;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
import org.jboss.tools.common.util.EclipseJavaUtil;
/**
@@ -31,7 +32,7 @@
return qualifiedName;
}
- public void setPackage(IPackageDeclaration pkg, DefinitionContext context) {
+ public void setPackage(IPackageDeclaration pkg, IRootDefinitionContext context) {
qualifiedName = pkg.getElementName();
IType contextType = null;
ICompilationUnit u = null;
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/TypeDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/TypeDefinition.java 2011-04-05
20:01:52 UTC (rev 30346)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/TypeDefinition.java 2011-04-05
23:59:23 UTC (rev 30347)
@@ -20,6 +20,7 @@
import org.eclipse.jdt.core.IType;
import org.jboss.tools.cdi.core.CDIConstants;
import org.jboss.tools.cdi.core.IAnnotationDeclaration;
+import org.jboss.tools.cdi.core.IRootDefinitionContext;
import org.jboss.tools.cdi.internal.core.impl.AnnotationDeclaration;
import org.jboss.tools.cdi.internal.core.impl.ParametedType;
@@ -38,7 +39,7 @@
}
@Override
- protected void init(IType contextType, DefinitionContext context) throws CoreException
{
+ protected void init(IType contextType, IRootDefinitionContext context) throws
CoreException {
super.init(contextType, context);
isAbstract = Flags.isAbstract(type.getFlags());
for (IAnnotationDeclaration a: annotations) {