Author: scabanovich
Date: 2010-05-21 11:14:04 -0400 (Fri, 21 May 2010)
New Revision: 22247
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/Parameter.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/ParametedTypeFactory.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParameterDefinition.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java
Log:
https://jira.jboss.org/browse/JBIDE-6310
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/Parameter.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/Parameter.java 2010-05-21
14:59:14 UTC (rev 22246)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/Parameter.java 2010-05-21
15:14:04 UTC (rev 22247)
@@ -76,4 +76,21 @@
return definition.getAnnotationTypes();
}
+ public String getValue(String annotationTypeName) {
+ String text = definition.getAnnotationText(annotationTypeName);
+ if(text != null) {
+ int i = text.indexOf('(');
+ int j = text.lastIndexOf(')');
+ if(i >= 0 && j > i) {
+ String values = text.substring(i + 1, j).trim();
+ if(values.startsWith("\"") &&
values.endsWith("\"")) {
+ return values.substring(1, values.length() - 1);
+ }
+ //TODO improve
+ return values;
+ }
+ }
+ return null;
+ }
+
}
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 2010-05-21
14:59:14 UTC (rev 22246)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/MethodDefinition.java 2010-05-21
15:14:04 UTC (rev 22247)
@@ -71,7 +71,9 @@
if(nameRange != null) range = nameRange;
int paramStart = content.indexOf('(', range.getOffset());
if(paramStart < 0) return;
- int paramEnd = content.indexOf(')', paramStart);
+ int declEnd = content.indexOf('{', paramStart);
+ if(declEnd < 0) return;
+ int paramEnd = content.lastIndexOf(')', declEnd);
if(paramEnd < 0) return;
String paramsString = content.substring(paramStart + 1, paramEnd);
if(paramsString.indexOf('@') < 0) return;
@@ -111,6 +113,8 @@
v.setValue(q);
v.valueStartPosition = start + params[i].indexOf(q);
v.valueLength = q.length();
+ int s = q.indexOf('(');
+ if(s >= 0) q = q.substring(0, s).trim();
String annotationType = EclipseJavaUtil.resolveType(contextType,
q.substring(1).trim());
if(annotationType != null) pd.annotationsByTypeName.put(annotationType, v);
}
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-05-21
14:59:14 UTC (rev 22246)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParametedTypeFactory.java 2010-05-21
15:14:04 UTC (rev 22247)
@@ -75,6 +75,16 @@
cache.put(key, result);
return result;
}
+ String[] ps = context.getTypeParameterSignatures();
+ for (int i = 0; i < ps.length; i++) {
+ String t = ps[i];
+ if(t.endsWith(":")) t = t.substring(0, t.length() - 1);
+ t = "Q" + t + ";";
+ if(t.equals(result.getSignature())) {
+ cache. put(key, result);
+ return result;
+ }
+ }
} else {
int endToken = typeSignature.lastIndexOf('>');
if(endToken < startToken) return null;
@@ -112,4 +122,4 @@
cache.clear();
}
-}
+}
\ No newline at end of file
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParameterDefinition.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParameterDefinition.java 2010-05-21
14:59:14 UTC (rev 22246)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/definition/ParameterDefinition.java 2010-05-21
15:14:04 UTC (rev 22247)
@@ -62,4 +62,11 @@
public ITextSourceReference getPosition() {
return position;
}
+
+ public String getAnnotationText(String annotationTypeName) {
+ ITextSourceReference pos = getAnnotationPosition(annotationTypeName);
+ if(pos == null) return null;
+ String text =
methodDefinition.getTypeDefinition().getContent().substring(pos.getStartPosition(),
pos.getStartPosition() + pos.getLength());
+ return text;
+ }
}
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-05-21
14:59:14 UTC (rev 22246)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2010-05-21
15:14:04 UTC (rev 22247)
@@ -49,6 +49,7 @@
import org.jboss.tools.cdi.core.IDecorator;
import org.jboss.tools.cdi.core.IInjectionPoint;
import org.jboss.tools.cdi.core.IInjectionPointField;
+import org.jboss.tools.cdi.core.IInjectionPointParameter;
import org.jboss.tools.cdi.core.IInterceptor;
import org.jboss.tools.cdi.core.IParametedType;
import org.jboss.tools.cdi.core.IParameter;
@@ -63,6 +64,7 @@
import org.jboss.tools.cdi.core.IStereotypeDeclaration;
import org.jboss.tools.cdi.core.ITypeDeclaration;
import org.jboss.tools.cdi.core.preferences.CDIPreferences;
+import org.jboss.tools.cdi.internal.core.impl.Parameter;
import org.jboss.tools.cdi.internal.core.impl.SessionBean;
import org.jboss.tools.common.text.ITextSourceReference;
import org.jboss.tools.jst.web.kb.IKbProject;
@@ -757,7 +759,19 @@
* other than injected field declares a @Named annotation that does not
* specify the value member
*/
- if (!(injection instanceof IInjectionPointField)) {
+ if(injection instanceof IInjectionPointParameter) {
+ IInjectionPointParameter pinjection = (IInjectionPointParameter)injection;
+ if(pinjection.isAnnotationPresent(CDIConstants.NAMED_QUALIFIER_TYPE_NAME)) {
+ String value =
((Parameter)pinjection).getValue(CDIConstants.NAMED_QUALIFIER_TYPE_NAME);
+ if(value == null || value.length() == 0) {
+ addError(CDIValidationMessages.PARAM_INJECTION_DECLARES_EMPTY_NAME,
+ CDIPreferences.PARAM_INJECTION_DECLARES_EMPTY_NAME,
+ pinjection.getAnnotationPosition(CDIConstants.NAMED_QUALIFIER_TYPE_NAME),
+ injection.getResource());
+ }
+
+ }
+ } else if (!(injection instanceof IInjectionPointField)) {
IAnnotationDeclaration named =
injection.getAnnotation(CDIConstants.NAMED_QUALIFIER_TYPE_NAME);
if (named != null) {
try {