Author: scabanovich
Date: 2011-04-05 14:21:10 -0400 (Tue, 05 Apr 2011)
New Revision: 30329
Removed:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IBeanNameFeature.java
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/CDIExtensionManager.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ProducerField.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ProducerMethod.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/DefinitionContext.java
Log:
JBIDE-8200
https://issues.jboss.org/browse/JBIDE-8200
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
17:59:18 UTC (rev 30328)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionFactory.java 2011-04-05
18:21:10 UTC (rev 30329)
@@ -21,7 +21,6 @@
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.IBeanNameFeature;
import org.jboss.tools.cdi.core.extension.feature.IProcessAnnotatedTypeFeature;
/**
@@ -46,7 +45,6 @@
public static Class<?>[] FEATURES = {
IProcessAnnotatedTypeFeature.class,
- IBeanNameFeature.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
17:59:18 UTC (rev 30328)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/CDIExtensionManager.java 2011-04-05
18:21:10 UTC (rev 30329)
@@ -17,7 +17,6 @@
import java.util.Set;
import org.jboss.tools.cdi.core.CDICoreNature;
-import org.jboss.tools.cdi.core.extension.feature.IBeanNameFeature;
import org.jboss.tools.cdi.core.extension.feature.IProcessAnnotatedTypeFeature;
/**
@@ -122,14 +121,6 @@
return featureToExtensions.containsKey(feature) ? featureToExtensions.get(feature) :
EMPTY;
}
- public Set<IBeanNameFeature> getBeanNameFeature() {
- Set<IBeanNameFeature> result = featureStorage.beanName;
- if(result == null) {
- featureStorage.beanName = result = getFeature(IBeanNameFeature.class);
- }
- return result;
- }
-
public Set<IProcessAnnotatedTypeFeature> getProcessAnnotatedTypeFeature() {
Set<IProcessAnnotatedTypeFeature> result = featureStorage.processAnnotatedType;
if(result == null) {
@@ -153,11 +144,9 @@
}
class FeatureStorage {
- Set<IBeanNameFeature> beanName = null;
Set<IProcessAnnotatedTypeFeature> processAnnotatedType = null;
void clean() {
- beanName = null;
processAnnotatedType = null;
}
Deleted:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IBeanNameFeature.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IBeanNameFeature.java 2011-04-05
17:59:18 UTC (rev 30328)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/extension/feature/IBeanNameFeature.java 2011-04-05
18:21:10 UTC (rev 30329)
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * 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.IBean;
-
-/**
- * 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.
- *
- * @author Viacheslav Kabanovich
- *
- */
-public interface IBeanNameFeature {
- public static String ID =
"org.jboss.tools.cdi.core.extension.feature.IBeanNameFeature";
-
- public String computeBeanName(IBean bean);
-}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java 2011-04-05
17:59:18 UTC (rev 30328)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java 2011-04-05
18:21:10 UTC (rev 30329)
@@ -40,7 +40,6 @@
import org.jboss.tools.cdi.core.IStereotype;
import org.jboss.tools.cdi.core.IStereotypeDeclaration;
import org.jboss.tools.cdi.core.ITypeDeclaration;
-import org.jboss.tools.cdi.core.extension.feature.IBeanNameFeature;
import org.jboss.tools.cdi.internal.core.impl.definition.AbstractMemberDefinition;
import org.jboss.tools.cdi.internal.core.impl.definition.FieldDefinition;
import org.jboss.tools.cdi.internal.core.impl.definition.MethodDefinition;
@@ -314,14 +313,6 @@
return specialized.getName();
}
- Set<IBeanNameFeature> fs = getExtensionManager().getBeanNameFeature();
- if(fs != null) for (IBeanNameFeature f: fs) {
- String result = f.computeBeanName(this);
- if(result != null) {
- return result;
- }
- }
-
AnnotationDeclaration named = findNamedAnnotation();
if(named == null) return null;
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ProducerField.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ProducerField.java 2011-04-05
17:59:18 UTC (rev 30328)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ProducerField.java 2011-04-05
18:21:10 UTC (rev 30329)
@@ -26,7 +26,6 @@
import org.jboss.tools.cdi.core.IStereotype;
import org.jboss.tools.cdi.core.IStereotypeDeclaration;
import org.jboss.tools.cdi.core.ITypeDeclaration;
-import org.jboss.tools.cdi.core.extension.feature.IBeanNameFeature;
import org.jboss.tools.common.text.ITextSourceReference;
/**
@@ -90,14 +89,6 @@
}
public String getName() {
- Set<IBeanNameFeature> fs = getExtensionManager().getBeanNameFeature();
- if(fs != null) for (IBeanNameFeature f: fs) {
- String result = f.computeBeanName(this);
- if(result != null) {
- return result;
- }
- }
-
AnnotationDeclaration named = findNamedAnnotation();
if(named == null) return null;
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ProducerMethod.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ProducerMethod.java 2011-04-05
17:59:18 UTC (rev 30328)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ProducerMethod.java 2011-04-05
18:21:10 UTC (rev 30329)
@@ -26,7 +26,6 @@
import org.jboss.tools.cdi.core.IStereotype;
import org.jboss.tools.cdi.core.IStereotypeDeclaration;
import org.jboss.tools.cdi.core.ITypeDeclaration;
-import org.jboss.tools.cdi.core.extension.feature.IBeanNameFeature;
import org.jboss.tools.cdi.internal.core.impl.definition.MethodDefinition;
import org.jboss.tools.cdi.internal.core.impl.definition.ParameterDefinition;
import org.jboss.tools.common.text.ITextSourceReference;
@@ -119,14 +118,6 @@
return specialized.getName();
}
- Set<IBeanNameFeature> fs = getExtensionManager().getBeanNameFeature();
- if(fs != null) for (IBeanNameFeature f: fs) {
- String result = f.computeBeanName(this);
- if(result != null) {
- return result;
- }
- }
-
AnnotationDeclaration named = findNamedAnnotation();
if(named == null) return null;
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
17:59:18 UTC (rev 30328)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractMemberDefinition.java 2011-04-05
18:21:10 UTC (rev 30329)
@@ -26,6 +26,7 @@
import org.jboss.tools.cdi.core.CDICorePlugin;
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.internal.core.impl.AnnotationDeclaration;
import org.jboss.tools.cdi.internal.core.impl.InterceptorBindingDeclaration;
import org.jboss.tools.cdi.internal.core.impl.JavaAnnotation;
@@ -80,39 +81,53 @@
resource = ((IJavaElement)member).getResource();
IAnnotation[] ts = member.getAnnotations();
for (int i = 0; i < ts.length; i++) {
- AnnotationDeclaration a = new AnnotationDeclaration();
- a.setProject(context.getProject());
- a.setDeclaration(new JavaAnnotation(ts[i], contextType));
- AnnotationDeclaration b = null;
- int kind = context.getAnnotationKind(a.getType());
- if(kind > 0 && (kind & AnnotationDefinition.STEREOTYPE) > 0) {
- b = new StereotypeDeclaration(a);
- annotations.add(b);
- }
- if(kind > 0 && (kind & AnnotationDefinition.INTERCEPTOR_BINDING) >
0) {
- b = new InterceptorBindingDeclaration(a);
- annotations.add(b);
- }
- if(kind > 0 && (kind & AnnotationDefinition.QUALIFIER) > 0) {
- b = new QualifierDeclaration(a);
- annotations.add(b);
- }
- if(kind > 0 && (kind & AnnotationDefinition.SCOPE) > 0) {
- b = new ScopeDeclaration(a);
- annotations.add(b);
- }
- if(b == null) {
- annotations.add(a);
- } else {
- a = b;
- }
-
- if(a.getTypeName() != null) {
- annotationsByType.put(a.getTypeName(), a);
- }
+ IJavaAnnotation ja = new JavaAnnotation(ts[i], contextType);
+ addAnnotation(ja, context);
}
}
+ public void addAnnotation(IJavaAnnotation ja, DefinitionContext context) {
+ AnnotationDeclaration a = new AnnotationDeclaration();
+ a.setProject(context.getProject());
+ a.setDeclaration(ja);
+ AnnotationDeclaration b = null;
+ int kind = context.getAnnotationKind(a.getType());
+ if(kind > 0 && (kind & AnnotationDefinition.STEREOTYPE) > 0) {
+ b = new StereotypeDeclaration(a);
+ annotations.add(b);
+ }
+ if(kind > 0 && (kind & AnnotationDefinition.INTERCEPTOR_BINDING) > 0)
{
+ b = new InterceptorBindingDeclaration(a);
+ annotations.add(b);
+ }
+ if(kind > 0 && (kind & AnnotationDefinition.QUALIFIER) > 0) {
+ b = new QualifierDeclaration(a);
+ annotations.add(b);
+ }
+ if(kind > 0 && (kind & AnnotationDefinition.SCOPE) > 0) {
+ b = new ScopeDeclaration(a);
+ annotations.add(b);
+ }
+ if(b == null) {
+ annotations.add(a);
+ } else {
+ a = b;
+ }
+
+ if(a.getTypeName() != null) {
+ annotationsByType.put(a.getTypeName(), a);
+ }
+ }
+
+ public void removeAnnotation(IAnnotationDeclaration a) {
+ String name = ((AnnotationDeclaration)a).getTypeName();
+ IAnnotationDeclaration b = annotationsByType.get(name);
+ if(a == b) {
+ annotationsByType.remove(name);
+ annotations.remove(a);
+ }
+ }
+
/*
* (non-Javadoc)
* @see org.jboss.tools.cdi.core.IAnnotated#getAnnotations()
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
17:59:18 UTC (rev 30328)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/DefinitionContext.java 2011-04-05
18:21:10 UTC (rev 30329)
@@ -347,6 +347,20 @@
return result;
}
+ public AnnotationDefinition getAnnotation(String fullyQualifiedName) {
+ AnnotationDefinition result = annotations.get(fullyQualifiedName);
+ if(result == null) {
+ Set<CDICoreNature> ns = project.getCDIProjects(true);
+ for (CDICoreNature n: ns) {
+ result = n.getDefinitions().getAnnotation(fullyQualifiedName);
+ if(result != null) {
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
public List<AnnotationDefinition> getAllAnnotations() {
List<AnnotationDefinition> result = new ArrayList<AnnotationDefinition>();
synchronized (annotations) {