Author: scabanovich
Date: 2010-03-17 10:27:32 -0400 (Wed, 17 Mar 2010)
New Revision: 20887
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IBeanManager.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/AbstractBeanElement.java
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/ClassBean.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ParametedType.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/ParametedTypeFactory.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-6073
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IBeanManager.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IBeanManager.java 2010-03-17
13:57:43 UTC (rev 20886)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IBeanManager.java 2010-03-17
14:27:32 UTC (rev 20887)
@@ -80,7 +80,7 @@
*
* @return the resulting set of beans
*/
- Set<IBean> getBeans(boolean attemptToResolveAmbiguousDependency, IType beanType,
IAnnotationDeclaration... qualifiers);
+ Set<IBean> getBeans(boolean attemptToResolveAmbiguousDependency, IParametedType
beanType, IAnnotationDeclaration... qualifiers);
/**
* Returns the set of beans which have the given required type and qualifier
@@ -102,7 +102,7 @@
*
* @return the resulting set of beans
*/
- Set<IBean> getBeans(boolean attemptToResolveAmbiguousDependency, IType beanType,
IType... qualifiers);
+ Set<IBean> getBeans(boolean attemptToResolveAmbiguousDependency, IParametedType
beanType, IType... qualifiers);
/**
* Returns the set of beans which have the given required type and qualifier
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/AbstractBeanElement.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/AbstractBeanElement.java 2010-03-17
13:57:43 UTC (rev 20886)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/AbstractBeanElement.java 2010-03-17
14:27:32 UTC (rev 20887)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.cdi.internal.core.impl;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -94,17 +95,31 @@
}
public Set<IQualifierDeclaration> getQualifierDeclarations(boolean
includeInherited) {
- // TODO take into account includeInherited parameter.
Set<IQualifierDeclaration> result = new HashSet<IQualifierDeclaration>();
+ Set<IQualifier> qs = new HashSet<IQualifier>();
for(AnnotationDeclaration a: definition.getAnnotations()) {
int k = getCDIProject().getNature().getDefinitions().getAnnotationKind(a.getType());
if(k == AnnotationDefinition.QUALIFIER) {
- result.add((IQualifierDeclaration)a);
+ IQualifierDeclaration q = (IQualifierDeclaration)a;
+ result.add(q);
+ if(q.getQualifier() != null) qs.add(q.getQualifier());
}
}
+ if(includeInherited) {
+ Set<IQualifierDeclaration> ds = getInheritedQualifierDeclarations();
+ for (IQualifierDeclaration d : ds) {
+ if (d.getQualifier() != null && !qs.contains(d.getQualifier())) {
+ result.add(d);
+ }
+ }
+ }
return result;
}
+ protected Set<IQualifierDeclaration> getInheritedQualifierDeclarations() {
+ return Collections.emptySet();
+ }
+
public Set<IQualifier> getQualifiers() {
IQualifier any = getCDIProject().getQualifier(CDIConstants.ANY_QUALIFIER_TYPE_NAME);
IQualifier def =
getCDIProject().getQualifier(CDIConstants.DEFAULT_QUALIFIER_TYPE_NAME);
Modified:
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 2010-03-17
13:57:43 UTC (rev 20886)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java 2010-03-17
14:27:32 UTC (rev 20887)
@@ -44,6 +44,7 @@
import org.jboss.tools.cdi.core.IStereotype;
import org.jboss.tools.cdi.internal.core.impl.definition.AnnotationDefinition;
import org.jboss.tools.cdi.internal.core.impl.definition.BeansXMLDefinition;
+import org.jboss.tools.cdi.internal.core.impl.definition.ParametedTypeFactory;
import org.jboss.tools.cdi.internal.core.impl.definition.TypeDefinition;
import org.jboss.tools.common.text.INodeReference;
@@ -178,7 +179,7 @@
}
public Set<IBean> getBeans(boolean attemptToResolveAmbiguousDependency,
- IType beanType, IAnnotationDeclaration... qualifiers) {
+ IParametedType beanType, IAnnotationDeclaration... qualifiers) {
// TODO
return Collections.emptySet();
}
@@ -692,7 +693,7 @@
* @see org.jboss.tools.cdi.core.IBeanManager#getBeans(boolean,
org.eclipse.jdt.core.IType, org.eclipse.jdt.core.IType[])
*/
public Set<IBean> getBeans(boolean attemptToResolveAmbiguousDependency,
- IType beanType, IType... qualifiers) {
+ IParametedType beanType, IType... qualifiers) {
// TODO
return Collections.emptySet();
}
@@ -704,7 +705,7 @@
public Set<IBean> getBeans(boolean attemptToResolveAmbiguousDependency,
String fullyQualifiedBeanType,
String... fullyQualifiedQualifiersTypes) {
- // TODO
+
return Collections.emptySet();
}
}
\ No newline at end of file
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 2010-03-17
13:57:43 UTC (rev 20886)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java 2010-03-17
14:27:32 UTC (rev 20887)
@@ -12,8 +12,10 @@
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -32,6 +34,7 @@
import org.jboss.tools.cdi.core.IObserverMethod;
import org.jboss.tools.cdi.core.IParametedType;
import org.jboss.tools.cdi.core.IProducer;
+import org.jboss.tools.cdi.core.IQualifierDeclaration;
import org.jboss.tools.cdi.core.IScope;
import org.jboss.tools.cdi.core.IScopeDeclaration;
import org.jboss.tools.cdi.core.IStereotype;
@@ -402,4 +405,17 @@
scope = getCDIProject().getScope(CDIConstants.DEPENDENT_ANNOTATION_TYPE_NAME);
}
}
+
+ protected Set<IQualifierDeclaration> getInheritedQualifierDeclarations() {
+ if(superClassBean == null) return Collections.emptySet();
+ Set<IQualifierDeclaration> result = new HashSet<IQualifierDeclaration>();
+ Set<IQualifierDeclaration> ds = superClassBean.getQualifierDeclarations();
+ for (IQualifierDeclaration d: ds) {
+ if(d.getQualifier() != null && d.getQualifier().getInheritedDeclaration() !=
null) {
+ result.add(d);
+ }
+ }
+ return result;
+ }
+
}
\ No newline at end of file
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ParametedType.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ParametedType.java 2010-03-17
13:57:43 UTC (rev 20886)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ParametedType.java 2010-03-17
14:27:32 UTC (rev 20887)
@@ -96,8 +96,19 @@
if(signature != null && signature.equals(other.signature)) {
return true;
}
- //TODO
- return false;
+ if(type == null || !type.equals(other.type)) {
+ return false;
+ }
+ if(parameterTypes.size() != other.parameterTypes.size()) {
+ return false;
+ }
+ for (int i = 0; i < parameterTypes.size(); i++) {
+ if(!parameterTypes.get(i).equals(other.parameterTypes.get(i))) {
+ return false;
+ }
+ }
+
+ return true;
}
void buildInheritance() {
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 2010-03-17
13:57:43 UTC (rev 20886)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java 2010-03-17
14:27:32 UTC (rev 20887)
@@ -61,17 +61,8 @@
this.type = contextType;
super.init(contextType, context);
qualifiedName = getType().getFullyQualifiedName();
- parametedType = new ParametedType();
+ parametedType =
context.getProject().getDelegate().getNature().getTypeFactory().newParametedType(type);
if(type != null && !type.isBinary()) {
- ISourceRange r = type.getNameRange();
- if(r != null) {
- parametedType = new TypeDeclaration(parametedType, r.getOffset(), r.getLength());
- }
- }
- parametedType.setFactory(context.getProject().getDelegate().getNature().getTypeFactory());
- parametedType.setType(this.type);
- parametedType.setSignature("Q" + qualifiedName + ";");
- if(type != null && !type.isBinary()) {
parametedType.setPositionProvider(new PositionProviderImpl());
parametedType.getInheritedTypes();
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParametedTypeFactory.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParametedTypeFactory.java 2010-03-17
13:57:43 UTC (rev 20886)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParametedTypeFactory.java 2010-03-17
14:27:32 UTC (rev 20887)
@@ -4,14 +4,36 @@
import java.util.Map;
import java.util.StringTokenizer;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jdt.core.ISourceRange;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.jboss.tools.cdi.internal.core.impl.ParametedType;
+import org.jboss.tools.cdi.internal.core.impl.TypeDeclaration;
import org.jboss.tools.common.model.util.EclipseJavaUtil;
public class ParametedTypeFactory {
Map<String, ParametedType> cache = new HashMap<String, ParametedType>();
+ public ParametedType newParametedType(IType type) {
+ ParametedType parametedType = new ParametedType();
+ if(type != null && !type.isBinary()) {
+ ISourceRange r = null;
+ try {
+ r = type.getNameRange();
+ } catch (CoreException e) {
+ //ignore
+ }
+ if(r != null) {
+ parametedType = new TypeDeclaration(parametedType, r.getOffset(), r.getLength());
+ }
+ }
+ parametedType.setFactory(this);
+ parametedType.setType(type);
+ if(type != null) parametedType.setSignature("Q" +
type.getFullyQualifiedName() + ";");
+ return parametedType;
+ }
+
public ParametedType getParametedType(IType context, String typeSignature) throws
JavaModelException {
if(typeSignature == null) return null;
String key = context == null || context.isBinary() ||
"QObject;".equals(typeSignature) ? typeSignature :
context.getFullyQualifiedName() + "+" + typeSignature;