Author: scabanovich
Date: 2010-02-05 11:03:14 -0500 (Fri, 05 Feb 2010)
New Revision: 20149
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/internal/core/impl/AbstractBeanElement.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BeanMember.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/TypeDeclaration.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
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-5799
Cache added to ParametedTypeFactory
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 2010-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreBuilder.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -139,6 +139,8 @@
}
}
+ n.getTypeFactory().clean();
+
n.getDefinitions().newWorkingCopy(kind == FULL_BUILD);
if(n.getClassPath().update()) {
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 2010-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDICoreNature.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -25,6 +25,7 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.jboss.tools.cdi.internal.core.impl.definition.DefinitionContext;
+import org.jboss.tools.cdi.internal.core.impl.definition.ParametedTypeFactory;
import org.jboss.tools.cdi.internal.core.scanner.lib.ClassPathMonitor;
import org.jboss.tools.common.util.FileUtil;
import org.jboss.tools.jst.web.kb.internal.validation.ProjectValidationContext;
@@ -35,6 +36,8 @@
IProject project = null;
ICDIProject cdiProjectDelegate;
+ ParametedTypeFactory typeFactory = new ParametedTypeFactory();
+
ClassPathMonitor classPath = new ClassPathMonitor(this);
DefinitionContext definitions = new DefinitionContext();
@@ -80,6 +83,10 @@
return cdiProjectDelegate;
}
+ public ParametedTypeFactory getTypeFactory() {
+ return typeFactory;
+ }
+
public ClassPathMonitor getClassPath() {
return classPath;
}
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-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/AbstractBeanElement.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -135,6 +135,8 @@
IMemberValuePair[] ps = a.getMemberValuePairs();
if(ps == null || ps.length == 0) return result;
+ IMember member = (IMember)definition.getMember();
+ IType declaringType = member instanceof IType ? (IType)member :
member.getDeclaringType();
Object value = ps[0].getValue();
if(value instanceof Object[]) {
Object[] os = (Object[])value;
@@ -142,9 +144,7 @@
String rawTypeName = os[i].toString();
String typeName = rawTypeName;
if(!typeName.endsWith(";")) typeName = "Q" + typeName +
";";
- IMember member = (IMember)definition.getMember();
- IType declaringType = member instanceof IType ? (IType)member :
member.getDeclaringType();
- ParametedType p = ParametedTypeFactory.getParametedType(declaringType, typeName);
+ ParametedType p =
getCDIProject().getNature().getTypeFactory().getParametedType(declaringType, typeName);
if(p != null) {
int offset = 0;
int length = 0;
@@ -162,7 +162,7 @@
String rawTypeName = value.toString();
String typeName = rawTypeName;
if(!typeName.endsWith(";")) typeName = "Q" + typeName +
";";
- ParametedType p =
ParametedTypeFactory.getParametedType(((IMember)definition.getMember()).getDeclaringType(),
typeName);
+ ParametedType p =
getCDIProject().getNature().getTypeFactory().getParametedType(declaringType, typeName);
if(p != null) {
int offset = 0;
int length = 0;
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BeanMember.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BeanMember.java 2010-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BeanMember.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -45,7 +45,7 @@
String returnType = member instanceof IField ? ((IField)member).getTypeSignature()
: member instanceof IMethod ? ((IMethod)member).getReturnType() : null;
if(returnType != null) {
- ParametedType p = ParametedTypeFactory.getParametedType(member.getDeclaringType(),
returnType);
+ ParametedType p =
getCDIProject().getNature().getTypeFactory().getParametedType(member.getDeclaringType(),
returnType);
if(p != null) {
typeDeclaration = new TypeDeclaration(p, -1, 0);
}
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-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -41,6 +41,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;
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-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ClassBean.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -74,8 +74,8 @@
//add observer case
bm = new BeanMethod();
}
+ bm.setClassBean(this);
bm.setDefinition(m);
- bm.setClassBean(this);
methods.add(bm);
}
List<FieldDefinition> fs = definition.getFields();
@@ -89,8 +89,8 @@
//add observer case
bf = new BeanField();
}
+ bf.setClassBean(this);
bf.setDefinition(f);
- bf.setClassBean(this);
fields.add(bf);
}
}
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-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/ParametedType.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -29,6 +29,7 @@
*
*/
public class ParametedType implements IParametedType {
+ protected ParametedTypeFactory typeFactory = null;
protected IType type;
protected String signature;
protected List<ParametedType> parameterTypes = new
ArrayList<ParametedType>();
@@ -38,9 +39,16 @@
protected Set<IParametedType> inheritedTypes = new
HashSet<IParametedType>();
Set<IParametedType> allInheritedTypes = null;
-
public ParametedType() {}
+ public ParametedTypeFactory getFactory() {
+ return typeFactory;
+ }
+
+ public void setFactory(ParametedTypeFactory typefactory) {
+ this.typeFactory = typefactory;
+ }
+
public IType getType() {
return type;
}
@@ -79,8 +87,10 @@
String sc = type.getSuperclassTypeSignature();
if(sc != null) {
sc = resolveParameters(sc);
+ } else if(!"java.lang.Object".equals(type.getFullyQualifiedName())) {
+ sc = "QObject;";
}
- superType = ParametedTypeFactory.getParametedType(type, sc);
+ superType = getFactory().getParametedType(type, sc);
if(superType != null) {
inheritedTypes.add(superType);
}
@@ -88,7 +98,7 @@
String[] is = type.getSuperInterfaceTypeSignatures();
if(is != null) for (int i = 0; i < is.length; i++) {
String p = resolveParameters(is[i]);
- ParametedType t = ParametedTypeFactory.getParametedType(type, p);
+ ParametedType t = getFactory().getParametedType(type, p);
if(t != null) {
inheritedTypes.add(t);
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/TypeDeclaration.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/TypeDeclaration.java 2010-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/TypeDeclaration.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -22,9 +22,8 @@
int length;
int startPosition;
- public TypeDeclaration() {}
-
TypeDeclaration(ParametedType type, int startPosition, int length) {
+ this.setFactory(type.getFactory());
this.type = type.getType();
this.length = length;
this.startPosition = startPosition;
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-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/AbstractTypeDefinition.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -17,6 +17,7 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IType;
import org.jboss.tools.cdi.core.IParametedType;
+import org.jboss.tools.cdi.internal.core.impl.CDIProject;
import org.jboss.tools.cdi.internal.core.impl.ParametedType;
import org.jboss.tools.common.util.FileUtil;
@@ -56,6 +57,7 @@
super.init(contextType, context);
qualifiedName = getType().getFullyQualifiedName();
parametedType = new ParametedType();
+ parametedType.setFactory(context.getProject().getDelegate().getNature().getTypeFactory());
parametedType.setType(this.type);
parametedType.setSignature("Q" + qualifiedName + ";");
}
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-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParametedTypeFactory.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -1,5 +1,7 @@
package org.jboss.tools.cdi.internal.core.impl.definition;
+import java.util.HashMap;
+import java.util.Map;
import java.util.StringTokenizer;
import org.eclipse.jdt.core.IType;
@@ -8,10 +10,14 @@
import org.jboss.tools.common.model.util.EclipseJavaUtil;
public class ParametedTypeFactory {
+ Map<String, ParametedType> cache = new HashMap<String, ParametedType>();
- public static ParametedType getParametedType(IType context, String typeSignature) throws
JavaModelException {
+ 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;
+ if(cache.containsKey(key)) return cache.get(key);
ParametedType result = new ParametedType();
+ result.setFactory(this);
result.setSignature(typeSignature);
int startToken = typeSignature.indexOf('<');
if(startToken < 0) {
@@ -21,6 +27,7 @@
IType type = EclipseJavaUtil.findType(context.getJavaProject(), resovedTypeName);
if(type != null) {
result.setType(type);
+ cache.put(key, result);
return result;
}
} else {
@@ -47,10 +54,15 @@
newParams.append(param.getSignature());
}
result.setSignature("Q" + resovedTypeName + '<' + newParams +
'>' + ';');
+ cache.put(key, result);
return result;
}
}
return null;
}
+ public void clean() {
+ cache.clear();
+ }
+
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2010-02-05
15:47:33 UTC (rev 20148)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2010-02-05
16:03:14 UTC (rev 20149)
@@ -246,6 +246,7 @@
// - bean class or producer method or field specifies a @Typed annotation,
// and the value member specifies a class which does not correspond to a type
// in the unrestricted set of bean types of a bean
+ int i = 0;
Set<ITypeDeclaration> typedDeclarations = bean.getRestrictedTypeDeclaratios();
if(!typedDeclarations.isEmpty()) {
Set<IParametedType> allTypes = bean.getAllTypes();