Author: akazakov
Date: 2010-05-06 14:19:08 -0400 (Thu, 06 May 2010)
New Revision: 21945
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.ui/src/org/jboss/tools/cdi/ui/preferences/CDIConfigurationBlock.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/implementation/producer/field/definition/broken/parameterizedReturnTypeWithWildcard/SpiderProducerWildCardType_Broken.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/ValidationTest.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-2708 Added new CDI validation rule: producer
field type contains a wildcard type parameter.
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-06
18:17:18 UTC (rev 21944)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2010-05-06
18:19:08 UTC (rev 21945)
@@ -32,6 +32,7 @@
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
import org.eclipse.wst.validation.internal.core.ValidationException;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
import org.jboss.tools.cdi.core.CDIConstants;
@@ -521,6 +522,20 @@
}
}
}
+ /*
+ * 3.4. Producer fields
+ * - producer field type contains a wildcard type parameter
+ */
+ Set<ITypeDeclaration> typeDeclarations =
producerField.getAllTypeDeclarations();
+ if(!typeDeclarations.isEmpty()) {
+ ITypeDeclaration typeDeclaration = typeDeclarations.iterator().next();
+ String[] paramTypes = Signature.getTypeArguments(typeDeclaration.getSignature());
+ for (String paramType : paramTypes) {
+ if((paramType.length()==1 && paramType.charAt(0) == Signature.C_STAR) ||
paramType.charAt(0) == Signature.C_EXTENDS) {
+ addError(CDIValidationMessages.PRODUCER_FIELD_TYPE_HAS_WILDCARD,
CDIPreferences.PRODUCER_FIELD_TYPE_HAS_WILDCARD, typeDeclaration,
producer.getResource());
+ }
+ }
+ }
} else {
IProducerMethod producerMethod = (IProducerMethod)producer;
List<IParameter> params = producerMethod.getParameters();
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIConfigurationBlock.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIConfigurationBlock.java 2010-05-06
18:17:18 UTC (rev 21944)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIConfigurationBlock.java 2010-05-06
18:19:08 UTC (rev 21945)
@@ -43,7 +43,7 @@
CDIPreferencesMessages.CDIValidatorConfigurationBlock_section_type,
new String[][]{
{CDIPreferences.ILLEGAL_TYPE_IN_TYPED_DECLARATION,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_illegalTypeInTypedDeclaration_label},
-// {CDIPreferences.PRODUCER_METHOD_RETURN_TYPE_HAS_WILDCARD,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_producerMethodReturnTypeHasWildcard_label},
+ {CDIPreferences.PRODUCER_METHOD_RETURN_TYPE_HAS_WILDCARD,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_producerMethodReturnTypeHasWildcard_label},
// {CDIPreferences.PRODUCER_METHOD_RETURN_TYPE_IS_VARIABLE,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_producerMethodReturnTypeIsVariable_label},
// {CDIPreferences.PRODUCER_FIELD_TYPE_HAS_WILDCARD,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_producerFieldTypeHasWildcard_label},
// {CDIPreferences.PRODUCER_FIELD_TYPE_IS_VARIABLE,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_producerFieldTypeIsVariable_label},
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/implementation/producer/field/definition/broken/parameterizedReturnTypeWithWildcard/SpiderProducerWildCardType_Broken.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/implementation/producer/field/definition/broken/parameterizedReturnTypeWithWildcard/SpiderProducerWildCardType_Broken.java 2010-05-06
18:17:18 UTC (rev 21944)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/implementation/producer/field/definition/broken/parameterizedReturnTypeWithWildcard/SpiderProducerWildCardType_Broken.java 2010-05-06
18:19:08 UTC (rev 21945)
@@ -18,8 +18,8 @@
import javax.enterprise.inject.Produces;
-public class SpiderProducerWildCardType_Broken
+public class SpiderProducerWildCardType_Broken<T>
{
@Produces public FunnelWeaver<?> getAnotherFunnelWeaver = new
FunnelWeaver<Object>();
-
+ @Produces public FunnelWeaver<? extends T> getAnotherFunnelWeaver2;
}
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/ValidationTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/ValidationTest.java 2010-05-06
18:17:18 UTC (rev 21944)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/ValidationTest.java 2010-05-06
18:19:08 UTC (rev 21945)
@@ -261,6 +261,18 @@
}
/**
+ * 3.4. Producer fields
+ * - producer field type contains a wildcard type parameter
+ *
+ * @throws Exception
+ */
+ public void testParameterizedReturnTypeWithWildcard() throws Exception {
+ IFile file =
tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/implementation/producer/field/definition/broken/parameterizedReturnTypeWithWildcard/SpiderProducerWildCardType_Broken.java");
+ AbstractResourceMarkerTest.assertMarkerIsCreatedForGivenPosition(file,
AbstractResourceMarkerTest.MARKER_TYPE,
CDIValidationMessages.PRODUCER_FIELD_TYPE_HAS_WILDCARD, 23, 1008, 1033);
+ AbstractResourceMarkerTest.assertMarkerIsCreatedForGivenPosition(file,
AbstractResourceMarkerTest.MARKER_TYPE,
CDIValidationMessages.PRODUCER_FIELD_TYPE_HAS_WILDCARD, 24, 10011, 1036);
+ }
+
+ /**
* 3.9.1. Declaring an initializer method
* - an initializer method has a parameter annotated @Disposes
*