Author: akazakov
Date: 2010-12-03 07:33:40 -0500 (Fri, 03 Dec 2010)
New Revision: 27141
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IClassBean.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/preferences/CDIPreferenceInitializer.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/preferences/CDIPreferences.java
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/CDIValidationMessages.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/errorList.txt
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/messages.properties
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/CDIPreferencesMessages.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIPreferencesMessages.properties
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/validation/DeploymentProblemsValidationTests.java
Log:
https://jira.jboss.org/browse/JBIDE-6575 Added 5.1.3. Inconsistent specialization
validation rules.
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IClassBean.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IClassBean.java 2010-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/IClassBean.java 2010-12-03
12:33:40 UTC (rev 27141)
@@ -54,12 +54,10 @@
*/
Set<IBeanMethod> getObserverMethods();
-
/**
- * Returns all directly derived classes that declare annotation @Specializes
+ * Returns all the directly derived classes that declare annotation @Specializes
*
- * @return
+ * @return all the directly derived classes that declare annotation @Specializes
*/
Set<? extends IClassBean> getSpecializingBeans();
-
}
\ No newline at end of file
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/preferences/CDIPreferenceInitializer.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/preferences/CDIPreferenceInitializer.java 2010-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/preferences/CDIPreferenceInitializer.java 2010-12-03
12:33:40 UTC (rev 27141)
@@ -51,6 +51,7 @@
defaultPreferences.put(CDIPreferences.ILLEGAL_CONDITIONAL_OBSERVER,
CDIPreferences.WARNING);
defaultPreferences.put(CDIPreferences.MISSING_OR_INCORRECT_TARGET_OR_RETENTION_IN_ANNOTATION_TYPE,
CDIPreferences.WARNING);
defaultPreferences.put(CDIPreferences.DECORATOR_RESOLVES_TO_FINAL_BEAN,
CDIPreferences.WARNING);
+ defaultPreferences.put(CDIPreferences.INCONSISTENT_SPECIALIZATION,
CDIPreferences.WARNING);
defaultPreferences.putInt(SeverityPreferences.MAX_NUMBER_OF_MARKERS_PREFERENCE_NAME,
SeverityPreferences.DEFAULT_MAX_NUMBER_OF_MARKERS_PER_FILE);
}
}
\ No newline at end of file
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/preferences/CDIPreferences.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/preferences/CDIPreferences.java 2010-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/preferences/CDIPreferences.java 2010-12-03
12:33:40 UTC (rev 27141)
@@ -224,6 +224,10 @@
// - interceptor is annotated @Specializes (4.3.1 non-portable)
// - decorator is annotated @Specializes (4.3.1 non-portable)
public static final String INTERCEPTOR_ANNOTATED_SPECIALIZES =
INSTANCE.createSeverityOption("interceptorAnnotatedSpecializes"); //$NON-NLS-1$
+// 5.1.3. Inconsistent specialization
+// - Suppose an enabled bean X specializes a second bean Y. If there is another enabled
bean that specializes Y we say that inconsistent
+// specialization exists. The container automatically detects inconsistent
specialization and treats it as a deployment problem.
+ public static final String INCONSISTENT_SPECIALIZATION =
INSTANCE.createSeverityOption("inconsistentSpecialization"); //$NON-NLS-1$
//Miscellaneous
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-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2010-12-03
12:33:40 UTC (rev 27141)
@@ -110,7 +110,7 @@
CDIProjectSet projectSet;
private BeansXmlValidationDelegate beansXmlValidator = new
BeansXmlValidationDelegate(this);
- private AnnotationValidationDelegate annptationValidator = new
AnnotationValidationDelegate(this);
+ private AnnotationValidationDelegate annotationValidator = new
AnnotationValidationDelegate(this);
/*
* (non-Javadoc)
@@ -313,7 +313,7 @@
Set<String> scopes = cdiProject.getScopeNames();
for (String scope: scopes) {
- annptationValidator.validateScopeType(cdiProject.getScope(scope));
+ annotationValidator.validateScopeType(cdiProject.getScope(scope));
}
List<IFile> beansXmls = getAllBeansXmls();
@@ -350,7 +350,7 @@
validateQualifier(qualifier);
IScope scope = cdiProject.getScope(file.getFullPath());
- annptationValidator.validateScopeType(scope);
+ annotationValidator.validateScopeType(scope);
IInterceptorBinding binding = cdiProject.getInterceptorBinding(file.getFullPath());
validateInterceptorBinding(binding);
@@ -673,49 +673,75 @@
addError(CDIValidationMessages.INTERCEPTOR_ANNOTATED_SPECIALIZES,
CDIPreferences.INTERCEPTOR_ANNOTATED_SPECIALIZES, specializesDeclaration,
bean.getResource());
}
}
+ IBean specializedBean = bean.getSpecializedBean();
+ if(specializedBean!=null) {
+ if(!specializedBean.getBeanClass().isReadOnly()) {
+ getValidationContext().addLinkedCoreResource(bean.getSourcePath().toOSString(),
specializedBean.getResource().getFullPath(), false);
+ }
- IBean specializingBean = bean.getSpecializedBean();
- if(specializingBean==null) {
- return;
- }
- if(!specializingBean.getBeanClass().isReadOnly()) {
- getValidationContext().addLinkedCoreResource(bean.getSourcePath().toOSString(),
specializingBean.getResource().getFullPath(), false);
- }
-
- String beanClassName = bean.getBeanClass().getElementName();
- String beanName = bean instanceof IBeanMethod?beanClassName + "." +
((IBeanMethod)bean).getSourceMember().getElementName() + "()":beanClassName;
- String specializingBeanClassName = specializingBean.getBeanClass().getElementName();
- String specializingBeanName = specializingBean instanceof
IBeanMethod?specializingBeanClassName + "." +
((IBeanMethod)specializingBean).getSourceMember().getElementName() +
"()":specializingBeanClassName;
- /*
- * 4.3.1. Direct and indirect specialization
- * - X specializes Y but does not have some bean type of Y
- */
- Set<IParametedType> beanTypes = bean.getLegalTypes();
- Set<IParametedType> specializingBeanTypes = specializingBean.getLegalTypes();
- for (IParametedType specializingType : specializingBeanTypes) {
- boolean found = false;
- for (IParametedType type : beanTypes) {
- if(specializingType.getType().getFullyQualifiedName().equals(type.getType().getFullyQualifiedName()))
{
- found = true;
- break;
+ String beanClassName = bean.getBeanClass().getElementName();
+ String beanName = bean instanceof IBeanMethod?beanClassName + "." +
((IBeanMethod)bean).getSourceMember().getElementName() + "()":beanClassName;
+ String specializingBeanClassName = specializedBean.getBeanClass().getElementName();
+ String specializingBeanName = specializedBean instanceof
IBeanMethod?specializingBeanClassName + "." +
((IBeanMethod)specializedBean).getSourceMember().getElementName() +
"()":specializingBeanClassName;
+ /*
+ * 4.3.1. Direct and indirect specialization
+ * - X specializes Y but does not have some bean type of Y
+ */
+ Set<IParametedType> beanTypes = bean.getLegalTypes();
+ Set<IParametedType> specializingBeanTypes = specializedBean.getLegalTypes();
+ for (IParametedType specializingType : specializingBeanTypes) {
+ boolean found = false;
+ for (IParametedType type : beanTypes) {
+ if(specializingType.getType().getFullyQualifiedName().equals(type.getType().getFullyQualifiedName()))
{
+ found = true;
+ break;
+ }
}
+ if(!found) {
+ addError(CDIValidationMessages.MISSING_TYPE_IN_SPECIALIZING_BEAN,
CDIPreferences.MISSING_TYPE_IN_SPECIALIZING_BEAN,
+ new String[]{beanName, specializingBeanName,
specializingType.getType().getElementName()},
+ bean.getSpecializesAnnotationDeclaration(), bean.getResource());
+ }
}
- if(!found) {
- addError(CDIValidationMessages.MISSING_TYPE_IN_SPECIALIZING_BEAN,
CDIPreferences.MISSING_TYPE_IN_SPECIALIZING_BEAN,
- new String[]{beanName, specializingBeanName,
specializingType.getType().getElementName()},
- bean.getSpecializesAnnotationDeclaration(), bean.getResource());
+ /*
+ * 4.3.1. Direct and indirect specialization
+ * - X specializes Y and Y has a name and X declares a name explicitly, using @Named
+ */
+ if(specializedBean.getName()!=null) {
+ IAnnotationDeclaration nameDeclaration =
bean.getAnnotation(CDIConstants.NAMED_QUALIFIER_TYPE_NAME);
+ if(nameDeclaration!=null) {
+ addError(CDIValidationMessages.CONFLICTING_NAME_IN_SPECIALIZING_BEAN,
CDIPreferences.CONFLICTING_NAME_IN_SPECIALIZING_BEAN,
+ new String[]{beanName, specializingBeanName},
+ nameDeclaration, bean.getResource());
+ }
}
- }
- /*
- * 4.3.1. Direct and indirect specialization
- * - X specializes Y and Y has a name and X declares a name explicitly, using @Named
- */
- if(specializingBean.getName()!=null) {
- IAnnotationDeclaration nameDeclaration =
bean.getAnnotation(CDIConstants.NAMED_QUALIFIER_TYPE_NAME);
- if(nameDeclaration!=null) {
- addError(CDIValidationMessages.CONFLICTING_NAME_IN_SPECIALIZING_BEAN,
CDIPreferences.CONFLICTING_NAME_IN_SPECIALIZING_BEAN,
- new String[]{beanName, specializingBeanName},
- nameDeclaration, bean.getResource());
+ /*
+ * 5.1.3. Inconsistent specialization
+ * - Suppose an enabled bean X specializes a second bean Y. If there is another
enabled bean that specializes Y we say that inconsistent
+ * specialization exists. The container automatically detects inconsistent
specialization and treats it as a deployment problem.
+ */
+ if(bean.isEnabled() && specializedBean instanceof IClassBean) {
+ IClassBean supperClassBean = (IClassBean)specializedBean;
+ Set<? extends IClassBean> allSpecializingBeans =
supperClassBean.getSpecializingBeans();
+ if(allSpecializingBeans.size()>1) {
+ StringBuffer sb = new StringBuffer(bean.getSimpleJavaName());
+ boolean moreThanTwo = false;
+ for (IClassBean specializingBean : allSpecializingBeans) {
+ if(specializingBean!=bean && specializingBean.isEnabled()) {
+ sb.append(", ").append(specializingBean.getSimpleJavaName());
+ moreThanTwo = true;
+ if(!specializingBean.getBeanClass().isReadOnly()) {
+ getValidationContext().addLinkedCoreResource(specializingBean.getResource().getFullPath().toOSString(),
bean.getSourcePath(), false);
+ getValidationContext().addLinkedCoreResource(bean.getSourcePath().toOSString(),
specializingBean.getResource().getFullPath(), false);
+ }
+ }
+ }
+ if(moreThanTwo && specializesDeclaration!=null) {
+ addError(CDIValidationMessages.INCONSISTENT_SPECIALIZATION,
CDIPreferences.INCONSISTENT_SPECIALIZATION,
+ new String[]{sb.toString(), supperClassBean.getSimpleJavaName()},
+ specializesDeclaration, bean.getResource());
+ }
+ }
}
}
}
@@ -2099,7 +2125,7 @@
}
try {
- annptationValidator.validateStereotypeAnnotationTypeAnnotations(stereotype,
resource);
+ annotationValidator.validateStereotypeAnnotationTypeAnnotations(stereotype,
resource);
} catch (JavaModelException e) {
CDICorePlugin.getDefault().logError(e);
}
@@ -2145,7 +2171,7 @@
* Qualifier annotation type should be annotated with @Target({METHOD, FIELD,
PARAMETER, TYPE})
*/
try {
- annptationValidator.validateQualifierAnnotationTypeAnnotations(qualifier, resource);
+ annotationValidator.validateQualifierAnnotationTypeAnnotations(qualifier, resource);
} catch (JavaModelException e) {
CDICorePlugin.getDefault().logError(e);
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDIValidationMessages.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDIValidationMessages.java 2010-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDIValidationMessages.java 2010-12-03
12:33:40 UTC (rev 27141)
@@ -130,6 +130,7 @@
public static String CONFLICTING_NAME_IN_SPECIALIZING_BEAN;
public static String INTERCEPTOR_ANNOTATED_SPECIALIZES;
public static String DECORATOR_ANNOTATED_SPECIALIZES;
+ public static String INCONSISTENT_SPECIALIZATION;
public static String ILLEGAL_INJECTING_USERTRANSACTION_TYPE;
public static String ILLEGAL_INJECTING_INJECTIONPOINT_TYPE;
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/errorList.txt
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/errorList.txt 2010-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/errorList.txt 2010-12-03
12:33:40 UTC (rev 27141)
@@ -184,6 +184,9 @@
Deployment problems
+5.1.3. Inconsistent specialization
+- Suppose an enabled bean X specializes a second bean Y. If there is another enabled bean
that specializes Y we say that inconsistent
+ specialization exists. The container automatically detects inconsistent specialization
and treats it as a deployment problem.
5.2.1. Unsatisfied and ambiguous dependencies
- If an unsatisfied or unresolvable ambiguous dependency exists, the container
automatically detects the problem and
@@ -240,10 +243,4 @@
the class with the specified name is not an interceptor class, the container
automatically detects the problem and treats it as
a deployment problem.
- If the same class is listed twice under the <interceptors> element, the container
automatically detects the problem and treats it as
- a deployment problem.
-
- Unimplemented:
-
-5.1.3. Inconsistent specialization
-- Suppose an enabled bean X specializes a second bean Y. If there is another enabled bean
that specializes Y we say that inconsistent
- specialization exists. The container automatically detects inconsistent specialization
and treats it as a deployment problem.
\ No newline at end of file
+ a deployment problem.
\ No newline at end of file
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/messages.properties
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/messages.properties 2010-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/messages.properties 2010-12-03
12:33:40 UTC (rev 27141)
@@ -109,6 +109,7 @@
CONFLICTING_NAME_IN_SPECIALIZING_BEAN=Bean {0} specializes {1} and {1} has a name and {0}
declares a name explicitly, using @Named [JSR-299 �4.3.1]
INTERCEPTOR_ANNOTATED_SPECIALIZES=Interceptor is annotated @Specializes [JSR-299 �4.3.1]
DECORATOR_ANNOTATED_SPECIALIZES=Decorator is annotated @Specializes [JSR-299 �4.3.1]
+INCONSISTENT_SPECIALIZATION=There are a few enabled beans ({0}) that specialize the same
bean {1} [JSR-299 �5.1.3]
ILLEGAL_INJECTING_USERTRANSACTION_TYPE=Java EE component class has an injection point of
type UserTransaction and qualifier @Default, and may not validly make use of the JTA
UserTransaction according to the Java EE platform specification [JSR-299 �3.6]
ILLEGAL_INJECTING_INJECTIONPOINT_TYPE=Java EE component class supporting injection that
is not a bean has an injection point of type InjectionPoint and qualifier @Default
[JSR-299 �5.5.7]
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-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIConfigurationBlock.java 2010-12-03
12:33:40 UTC (rev 27141)
@@ -134,6 +134,7 @@
{CDIPreferences.MISSING_TYPE_IN_SPECIALIZING_BEAN,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_missingTypeInSpecializingBean_label},
{CDIPreferences.CONFLICTING_NAME_IN_SPECIALIZING_BEAN,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_conflictingNameInSpecializingBean_label},
{CDIPreferences.INTERCEPTOR_ANNOTATED_SPECIALIZES,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_interceptorAnnotatedSpecializes_label},
+ {CDIPreferences.INCONSISTENT_SPECIALIZATION,
CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_inconsistentSpecialization_label},
},
CDICorePlugin.PLUGIN_ID
);
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIPreferencesMessages.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIPreferencesMessages.java 2010-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIPreferencesMessages.java 2010-12-03
12:33:40 UTC (rev 27141)
@@ -117,6 +117,7 @@
public static String
CDIValidatorConfigurationBlock_pb_missingTypeInSpecializingBean_label;
public static String
CDIValidatorConfigurationBlock_pb_conflictingNameInSpecializingBean_label;
public static String
CDIValidatorConfigurationBlock_pb_interceptorAnnotatedSpecializes_label;
+ public static String
CDIValidatorConfigurationBlock_pb_inconsistentSpecialization_label;
// Miscellaneous
public static String CDIValidatorConfigurationBlock_section_miscellaneous;
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIPreferencesMessages.properties
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIPreferencesMessages.properties 2010-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIPreferencesMessages.properties 2010-12-03
12:33:40 UTC (rev 27141)
@@ -106,6 +106,7 @@
CDIValidatorConfigurationBlock_pb_missingTypeInSpecializingBean_label=Missing type in
Specializing Bean:
CDIValidatorConfigurationBlock_pb_conflictingNameInSpecializingBean_label=Conflicting
name in Specializing Bean:
CDIValidatorConfigurationBlock_pb_interceptorAnnotatedSpecializes_label=Interceptor or
decorator annotated @Specializes:
+CDIValidatorConfigurationBlock_pb_inconsistentSpecialization_label=Inconsistent
specialization:
##Miscellaneous
CDIValidatorConfigurationBlock_section_miscellaneous=Miscellaneous
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/validation/DeploymentProblemsValidationTests.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/validation/DeploymentProblemsValidationTests.java 2010-12-03
11:32:19 UTC (rev 27140)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/validation/DeploymentProblemsValidationTests.java 2010-12-03
12:33:40 UTC (rev 27141)
@@ -22,6 +22,20 @@
public class DeploymentProblemsValidationTests extends ValidationTest {
/**
+ * 5.1.3. Inconsistent specialization
+ * - Suppose an enabled bean X specializes a second bean Y. If there is another enabled
bean that specializes Y we say that inconsistent
+ * specialization exists. The container automatically detects inconsistent
specialization and treats it as a deployment problem.
+ *
+ * @throws Exception
+ */
+ public void testInconsistentSpecialization() throws Exception {
+ IFile file =
tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/inheritance/specialization/simple/broken/inconsistent/Maid.java");
+ assertMarkerIsCreated(file,
MessageFormat.format(CDIValidationMessages.INCONSISTENT_SPECIALIZATION, "Maid,
Manager", "Employee"), 21);
+ file =
tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/inheritance/specialization/simple/broken/inconsistent/Manager.java");
+ assertMarkerIsCreated(file,
MessageFormat.format(CDIValidationMessages.INCONSISTENT_SPECIALIZATION, "Manager,
Maid", "Employee"), 21);
+ }
+
+ /**
* 5.2.1. Unsatisfied and ambiguous dependencies
* - If an unresolvable ambiguous dependency exists, the container automatically
detects the problem and treats it as a deployment problem.
*