[jbosstools-commits] JBoss Tools SVN: r23003 - in trunk: cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation and 5 other directories.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Thu Jun 24 13:47:48 EDT 2010
Author: akazakov
Date: 2010-06-24 13:47:47 -0400 (Thu, 24 Jun 2010)
New Revision: 23003
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/Clazz.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/EnhancedLogger.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/IClazz.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/Logger.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/MockLogger.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampBroken.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLogger.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerBroken.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethod.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethodBroken.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLogger.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerBroken.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethod.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethodBroken.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampWithMethodBroken.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/beans.xml
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/DecoratorBean.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/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/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/ValidationTest.java
trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseJavaUtil.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-2708 Added new validation rule: Delegate type does not implement or extend a decorated type of the decorator, or specifies different type parameters
Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/DecoratorBean.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/DecoratorBean.java 2010-06-24 17:39:12 UTC (rev 23002)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/DecoratorBean.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007 Red Hat, Inc.
+ * Copyright (c) 2009 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
@@ -11,10 +11,10 @@
package org.jboss.tools.cdi.internal.core.impl;
import java.util.Set;
+
import org.jboss.tools.cdi.core.IAnnotationDeclaration;
import org.jboss.tools.cdi.core.IDecorator;
import org.jboss.tools.cdi.core.IParametedType;
-import org.jboss.tools.cdi.internal.core.impl.definition.TypeDefinition;
/**
*
@@ -25,16 +25,29 @@
public DecoratorBean() {}
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.tools.cdi.core.IDecorator#getDecoratedTypes()
+ */
public Set<IParametedType> getDecoratedTypes() {
- return ((TypeDefinition)definition).getInheritedTypes();
+ return getLegalTypes();
+// return ((TypeDefinition)definition).getInheritedTypes();
}
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.tools.cdi.core.IDecorator#getDecoratorAnnotation()
+ */
public IAnnotationDeclaration getDecoratorAnnotation() {
return getDefinition().getDecoratorAnnotation();
}
+ /*
+ * (non-Javadoc)
+ * @see org.jboss.tools.cdi.internal.core.impl.ClassBean#isEnabled()
+ */
+ @Override
public boolean isEnabled() {
return !getCDIProject().getDecoratorClasses(getBeanClass().getFullyQualifiedName()).isEmpty();
}
-
-}
+}
\ No newline at end of file
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-06-24 17:39:12 UTC (rev 23002)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/CDICoreValidator.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -10,7 +10,9 @@
******************************************************************************/
package org.jboss.tools.cdi.internal.core.validation;
+import java.text.MessageFormat;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -29,6 +31,7 @@
import org.eclipse.jdt.core.Flags;
import org.eclipse.jdt.core.IAnnotation;
import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IMember;
import org.eclipse.jdt.core.IMemberValuePair;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
@@ -290,6 +293,9 @@
if (reporter.isCancelled()) {
return;
}
+ if(bean.getBeanClass().isReadOnly()) {
+ return;
+ }
// Collect all relations between the bean and other CDI elements.
String name = bean.getName();
if (name != null) {
@@ -376,7 +382,9 @@
if(specializingBean==null) {
return;
}
- validationContext.addLinkedCoreResource(bean.getSourcePath().toOSString(), specializingBean.getResource().getFullPath(), false);
+ if(!specializingBean.getBeanClass().isReadOnly()) {
+ validationContext.addLinkedCoreResource(bean.getSourcePath().toOSString(), specializingBean.getResource().getFullPath(), false);
+ }
String beanClassName = bean.getBeanClass().getElementName();
String beanName = bean instanceof IBeanMethod?beanClassName + "." + ((IBeanMethod)bean).getSourceMember().getElementName() + "()":beanClassName;
@@ -1276,14 +1284,17 @@
Set<IInjectionPoint> injections = decorator.getInjectionPoints();
Set<ITextSourceReference> delegates = new HashSet<ITextSourceReference>();
+ IInjectionPoint delegate = null;
for (IInjectionPoint injection : injections) {
ITextSourceReference delegateAnnotation = injection.getDelegateAnnotation();
if(delegateAnnotation!=null) {
if(injection instanceof IInjectionPointField) {
+ delegate = injection;
delegates.add(delegateAnnotation);
}
if(injection instanceof IInjectionPointParameter) {
if(((IInjectionPointParameter) injection).getBeanMethod().getAnnotation(CDIConstants.PRODUCES_ANNOTATION_TYPE_NAME)==null) {
+ delegate = injection;
delegates.add(delegateAnnotation);
} else {
/*
@@ -1311,8 +1322,99 @@
IAnnotationDeclaration declaration = decorator.getDecoratorAnnotation();
addError(CDIValidationMessages.MISSING_DELEGATE, CDIPreferences.MISSING_DELEGATE, declaration, decorator.getResource());
}
+
+ /*
+ * 8.1.3. Decorator delegate injection points
+ * - delegate type does not implement or extend a decorated type of the decorator, or specifies different type parameters
+ */
+ if(delegate!=null) {
+ IParametedType delegateParametedType = delegate.getType();
+ if(delegateParametedType!=null) {
+ IType delegateType = delegateParametedType.getType();
+ if(delegateType != null) {
+ if(!checkTheOnlySuper(decorator, delegateParametedType)) {
+ Set<IParametedType> decoratedParametedTypes = decorator.getDecoratedTypes();
+ List<String> supers = null;
+ if(!delegateType.isReadOnly()) {
+ validationContext.addLinkedCoreResource(decorator.getResource().getFullPath().toOSString(), delegateType.getResource().getFullPath(), false);
+ }
+ for (IParametedType decoratedParametedType : decoratedParametedTypes) {
+ IType decoratedType = decoratedParametedType.getType();
+ if(decoratedType==null) {
+ continue;
+ }
+ if(!decoratedType.isReadOnly()) {
+ validationContext.addLinkedCoreResource(decorator.getResource().getFullPath().toOSString(), decoratedType.getResource().getFullPath(), false);
+ }
+ String decoratedTypeName = decoratedType.getFullyQualifiedName();
+ // Ignore the type of the decorator class bean
+ if(decoratedTypeName.equals(decorator.getBeanClass().getFullyQualifiedName())) {
+ continue;
+ }
+ if(decoratedTypeName.equals("java.lang.Object")) { //$NON-NLS-1$
+ continue;
+ }
+ if(supers==null) {
+ supers = getSuppers(delegateParametedType);
+ }
+ if(supers.contains(decoratedParametedType.getSignature())) {
+ continue;
+ } else {
+ ITextSourceReference declaration = delegate.getDelegateAnnotation();
+ if(delegateParametedType instanceof ITypeDeclaration) {
+ declaration = (ITypeDeclaration)delegateParametedType;
+ }
+ String typeName = Signature.getSignatureSimpleName(decoratedParametedType.getSignature());
+ addError(MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, typeName), CDIPreferences.DELEGATE_HAS_ILLEGAL_TYPE, declaration, decorator.getResource());
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
}
+ private boolean checkTheOnlySuper(IDecorator decorator, IParametedType delegatedType) {
+ try {
+ String superClassSignature = decorator.getBeanClass().getSuperclassTypeSignature();
+ String[] superInterfaceSignatures = decorator.getBeanClass().getSuperInterfaceTypeSignatures();
+ if(superClassSignature==null) {
+ if(superInterfaceSignatures.length==0) {
+ return true;
+ }
+ if(superInterfaceSignatures.length>1) {
+ return false;
+ }
+ IParametedType superType = cdiProject.getNature().getTypeFactory().getParametedType(decorator.getBeanClass(), superInterfaceSignatures[0]);
+ return superType.getSignature().equals(delegatedType.getSignature());
+ } else if(superInterfaceSignatures.length>0) {
+ return false;
+ }
+ IParametedType superType = cdiProject.getNature().getTypeFactory().getParametedType(decorator.getBeanClass(), superClassSignature);
+ return superType.getSignature().equals(delegatedType.getSignature());
+ } catch (JavaModelException e) {
+ CDICorePlugin.getDefault().logError(e);
+ }
+ return true;
+ }
+
+ private List<String> getSuppers(IParametedType type) {
+ try {
+ List<IType> types = EclipseJavaUtil.getSupperTypes(type.getType());
+ List<String> signatures = new ArrayList<String>();
+ for (IType iType : types) {
+ IParametedType superType = cdiProject.getNature().getTypeFactory().newParametedType(iType);
+ signatures.add(superType.getSignature());
+ }
+ signatures.add(type.getSignature());
+ return signatures;
+ } catch (JavaModelException e) {
+ CDICorePlugin.getDefault().logError(e);
+ }
+ return Collections.emptyList();
+ }
+
/*
* 2.2.2. Restricting the bean types of a bean
* - 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
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-06-24 17:39:12 UTC (rev 23002)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/errorList.txt 2010-06-24 17:47:47 UTC (rev 23003)
@@ -154,14 +154,14 @@
or bean constructor method parameter is annotated @Delegate
- bean class that is not a decorator has an injection point annotated @Delegate
+8.1.3. Decorated types of a decorator
+- delegate type does not implement or extend a decorated type of the decorator,
+ or specifies different type parameters
-8.1.3. Decorated types of a decorator
-- delegate type does not implement or extend a decorated type of the decorator,
- or specifies different type parameters
9.2. Declaring the interceptor bindings of an interceptor
- interceptor for lifecycle callbacks declares an interceptor binding type
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-06-24 17:39:12 UTC (rev 23002)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/validation/messages.properties 2010-06-24 17:47:47 UTC (rev 23003)
@@ -68,7 +68,7 @@
MISSING_DELEGATE=Decorator must have a delegate injection point [JSR-299 §8.1.2]
ILLEGAL_INJECTION_POINT_DELEGATE=Injection point that is a producer method parameter cannot be annotated @Delegate [JSR-299 §8.1.2]
ILLEGAL_BEAN_DECLARING_DELEGATE=Bean class that is not a decorator cannot have an injection point annotated @Delegate [JSR-299 §8.1.2]
-DELEGATE_HAS_ILLEGAL_TYPE=Delegate type does not implement or extend a decorated type of the decorator, or specifies different type parameters
+DELEGATE_HAS_ILLEGAL_TYPE=The delegate type must implement or extend the decorated type {0} [JSR-299 §8.1.3]
ILLEGAL_LIFECYCLE_CALLBACK_INTERCEPTOR_BINDING=Interceptor for lifecycle callbacks declares an interceptor binding type that is defined @Target({TYPE, METHOD})
ILLEGAL_INTERCEPTOR_BINDING_METHOD=Non-static, non-private, final method of a managed bean has a interceptor binding (either method level, or declaring class level)
CONFLICTING_INTERCEPTOR_BINDINGS=The set of interceptor bindings of a bean or interceptor, including bindings inherited from stereotypes and other interceptor bindings, has two instances of a certain interceptor binding type and the instances have different values of some annotation member
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-06-24 17:39:12 UTC (rev 23002)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/preferences/CDIConfigurationBlock.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -111,7 +111,7 @@
{CDIPreferences.MISSING_DELEGATE, CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_missingDelegate_label},
{CDIPreferences.ILLEGAL_INJECTION_POINT_DELEGATE, CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_illegalInjectionPointDelegate_label},
{CDIPreferences.ILLEGAL_BEAN_DECLARING_DELEGATE, CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_illegalBeanDeclaringDelegate_label},
-// {CDIPreferences.DELEGATE_HAS_ILLEGAL_TYPE, CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_delegateHasIllegalType_label},
+ {CDIPreferences.DELEGATE_HAS_ILLEGAL_TYPE, CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_delegateHasIllegalType_label},
// {CDIPreferences.ILLEGAL_LIFECYCLE_CALLBACK_INTERCEPTOR_BINDING, CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_illegalLifecycleCallbackInterceptorBinding_label},
// {CDIPreferences.ILLEGAL_INTERCEPTOR_BINDING_METHOD, CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_illegalInterceptorBindingMethod_label},
// {CDIPreferences.CONFLICTING_INTERCEPTOR_BINDINGS, CDIPreferencesMessages.CDIValidatorConfigurationBlock_pb_conflictingInterceptorBindings_label},
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/Clazz.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/Clazz.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/Clazz.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,5 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+public abstract class Clazz<T> implements Logger {
+
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/Clazz.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/EnhancedLogger.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/EnhancedLogger.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/EnhancedLogger.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,26 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc., and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+/**
+ * @author pmuir
+ *
+ */
+public interface EnhancedLogger
+{
+
+}
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/EnhancedLogger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/IClazz.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/IClazz.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/IClazz.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,5 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+public interface IClazz<T> {
+
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/IClazz.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/Logger.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/Logger.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/Logger.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,35 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc., and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author pmuir
+ *
+ */
+public interface Logger
+{
+
+ public static final Set<Type> TYPES = new HashSet<Type>(Arrays.asList(Logger.class));
+
+ public void log(String string);
+
+}
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/Logger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/MockLogger.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/MockLogger.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/MockLogger.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,41 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc., and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+/**
+ * @author pmuir
+ *
+ */
+public class MockLogger implements Logger, EnhancedLogger
+{
+
+ private static String log = "";
+
+ public void log(String string)
+ {
+ log += string;
+ }
+
+ /**
+ * @return the log
+ */
+ public static String getLog()
+ {
+ return log;
+ }
+
+}
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/MockLogger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampBroken.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampBroken.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampBroken.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,11 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+ at Decorator
+public class TimestampBroken implements IClazz<Logger> {
+
+ @Inject @Delegate private IClazz<String> logger;
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampBroken.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLogger.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLogger.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLogger.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+ at Decorator
+public abstract class TimestampLogger implements Logger, EnhancedLogger {
+
+ @Inject @Delegate private MockLogger logger;
+
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLogger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerBroken.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerBroken.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerBroken.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+ at Decorator
+public abstract class TimestampLoggerBroken extends Clazz<Logger> implements Logger {
+
+ @Inject @Delegate private Clazz<String> logger;
+
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerBroken.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethod.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethod.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethod.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,13 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+ at Decorator
+public abstract class TimestampLoggerWithMethod implements Logger, EnhancedLogger {
+
+ @Inject void setInt(@Delegate MockLogger logger) {
+
+ }
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethod.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethodBroken.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethodBroken.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethodBroken.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+ at Decorator
+public abstract class TimestampLoggerWithMethodBroken extends Clazz<String> implements Logger {
+
+ @Inject void setInt(@Delegate Clazz<Logger> logger) {
+ }
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethodBroken.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLogger.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLogger.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLogger.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+ at Decorator
+public abstract class TimestampParametedLogger extends Clazz<Logger> implements Logger {
+
+ @Inject @Delegate private Clazz<Logger> logger;
+
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLogger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerBroken.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerBroken.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerBroken.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+ at Decorator
+public abstract class TimestampParametedLoggerBroken extends Clazz<String> {
+
+ @Inject @Delegate private Clazz<Logger> logger;
+
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerBroken.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethod.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethod.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethod.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+ at Decorator
+public abstract class TimestampParametedLoggerWithMethod extends Clazz<String> implements Logger {
+
+ @Inject void setInt(@Delegate Clazz<String> logger) {
+ }
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethod.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethodBroken.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethodBroken.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethodBroken.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+ at Decorator
+public abstract class TimestampParametedLoggerWithMethodBroken extends Clazz<Logger> {
+
+ @Inject void setInt(@Delegate Clazz<String> logger) {
+ }
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethodBroken.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampWithMethodBroken.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampWithMethodBroken.java (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampWithMethodBroken.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+ at Decorator
+public class TimestampWithMethodBroken implements IClazz<String> {
+
+ @Inject void setInt(@Delegate IClazz<Logger> logger) {
+ }
+}
\ No newline at end of file
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/TimestampWithMethodBroken.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/beans.xml
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/beans.xml (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/beans.xml 2010-06-24 17:47:47 UTC (rev 23003)
@@ -0,0 +1,14 @@
+<beans>
+ <decorators>
+ <class>org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.TimestampBroken</class>
+ <class>org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.TimestampLogger</class>
+ <class>org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.TimestampLoggerBroken</class>
+ <class>org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.TimestampLoggerWithMethod</class>
+ <class>org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.TimestampLoggerWithMethodBroken</class>
+ <class>org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.TimestampParametedLogger</class>
+ <class>org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.TimestampParametedLoggerBroken</class>
+ <class>org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.TimestampParametedLoggerWithMethod</class>
+ <class>org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.TimestampParametedLoggerWithMethodBroken</class>
+ <class>org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.TimestampWithMethodBroken</class>
+ </decorators>
+</beans>
Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/jbt/validation/decorators/delegates/beans.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
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-06-24 17:39:12 UTC (rev 23002)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/ValidationTest.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -1043,8 +1043,8 @@
*/
public void testNonDecoratorWithDecoratesAnnotationNotOK() throws Exception {
IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/decorators/definition/broken/nonDecoratorWithDecorates/Elf.java");
- assertMarkerIsCreated(file, CDIValidationMessages.ILLEGAL_BEAN_DECLARING_DELEGATE);
- tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/decorators/definition/inject/delegateField/TimestampLogger.java");
+ assertMarkerIsCreated(file, CDIValidationMessages.ILLEGAL_BEAN_DECLARING_DELEGATE, 24);
+ file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/decorators/definition/inject/delegateField/TimestampLogger.java");
assertMarkerIsNotCreated(file, CDIValidationMessages.ILLEGAL_BEAN_DECLARING_DELEGATE);
file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/decorators/definition/inject/delegateInitializerMethod/TimestampLogger.java");
assertMarkerIsNotCreated(file, CDIValidationMessages.ILLEGAL_BEAN_DECLARING_DELEGATE);
@@ -1053,6 +1053,109 @@
}
/**
+ * 8.1.3. Decorator delegate injection points
+ * - delegate type does not implement or extend a decorated type of the decorator
+ *
+ * @throws Exception
+ */
+ public void testNotAllDecoratedTypesImplemented() throws Exception {
+ IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/decorators/definition/broken/notAllDecoratedTypesImplemented/TimestampLogger.java");
+ assertMarkerIsCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "EnhancedLogger"), 31);
+
+ file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/decorators/delegates/TimestampLogger.java");
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Logger"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "EnhancedLogger"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "TimestampLogger"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Object"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "MockLogger"));
+
+ file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethod.java");
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Logger"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "EnhancedLogger"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "TimestampLogger"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Object"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "MockLogger"));
+ }
+
+ /**
+ * 8.1.3. Decorator delegate injection points
+ * - delegate type specifies different type parameters
+ *
+ * @throws Exception
+ */
+ public void testDelegateSpecifiesDifferentTypeParameterInInterfcaeInFiled() throws Exception {
+ IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/decorators/delegates/TimestampBroken.java");
+ assertMarkerIsCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "IClazz<org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.Logger>"), 10);
+ }
+
+ /**
+ * 8.1.3. Decorator delegate injection points
+ * - delegate type specifies different type parameters
+ *
+ * @throws Exception
+ */
+ public void testDelegateSpecifiesDifferentTypeParameterInInterfcaeInMethod() throws Exception {
+ IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/decorators/delegates/TimestampWithMethodBroken.java");
+ assertMarkerIsCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "IClazz<java.lang.String>"), 10);
+ }
+
+ /**
+ * 8.1.3. Decorator delegate injection points
+ * - delegate type specifies different type parameters
+ *
+ * @throws Exception
+ */
+ public void testDelegateSpecifiesDifferentTypeParameterWithInterfaceInFiled() throws Exception {
+ IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerBroken.java");
+ assertMarkerIsCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Clazz<org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.Logger>"), 10);
+ }
+
+ /**
+ * 8.1.3. Decorator delegate injection points
+ * - delegate type specifies different type parameters
+ *
+ * @throws Exception
+ */
+ public void testDelegateSpecifiesDifferentTypeParameterWithInterfaceInMethod() throws Exception {
+ IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/decorators/delegates/TimestampLoggerWithMethodBroken.java");
+ assertMarkerIsCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Clazz<java.lang.String>"), 10);
+ }
+
+ /**
+ * 8.1.3. Decorator delegate injection points
+ * - delegate type specifies different type parameters
+ *
+ * @throws Exception
+ */
+ public void testDelegateSpecifiesDifferentTypeParameterInFiled() throws Exception {
+ IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerBroken.java");
+ assertMarkerIsCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Clazz<java.lang.String>"), 10);
+
+ file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLogger.java");
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Logger"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Clazz<org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.Logger>"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Test"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Object"));
+ }
+
+ /**
+ * 8.1.3. Decorator delegate injection points
+ * - delegate type specifies different type parameters
+ *
+ * @throws Exception
+ */
+ public void testDelegateSpecifiesDifferentTypeParameterInMethod() throws Exception {
+ IFile file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethodBroken.java");
+ assertMarkerIsCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Clazz<org.jboss.jsr299.tck.tests.jbt.validation.decorators.delegates.Logger>"), 10);
+
+ file = tckProject.getFile("JavaSource/org/jboss/jsr299/tck/tests/jbt/validation/decorators/delegates/TimestampParametedLoggerWithMethod.java");
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Logger"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Clazz<java.lang.String>"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Test"));
+ assertMarkerIsNotCreated(file, MessageFormat.format(CDIValidationMessages.DELEGATE_HAS_ILLEGAL_TYPE, "Object"));
+ }
+
+ /**
* 10.4.2. Declaring an observer method
* - method has more than one parameter annotated @Observes
*
@@ -1128,6 +1231,6 @@
}
private static String convertMessageToPatern(String message) {
- return message.replace("[", "\\[").replace("]", "\\]");
+ return message.replace("[", "\\[").replace("]", "\\]").replace("<", "\\<").replace(">", "\\>");
}
}
\ No newline at end of file
Modified: trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseJavaUtil.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseJavaUtil.java 2010-06-24 17:39:12 UTC (rev 23002)
+++ trunk/common/plugins/org.jboss.tools.common.model/src/org/jboss/tools/common/model/util/EclipseJavaUtil.java 2010-06-24 17:47:47 UTC (rev 23003)
@@ -10,10 +10,27 @@
******************************************************************************/
package org.jboss.tools.common.model.util;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import org.eclipse.core.resources.IProject;
-import org.eclipse.jdt.core.*;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IField;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IMember;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.ITypeHierarchy;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
import org.jboss.tools.common.model.plugin.ModelPlugin;
public class EclipseJavaUtil {
@@ -191,4 +208,17 @@
type = EclipseResourceUtil.getValidType(type.getJavaProject().getProject(), f);
return isDerivedClass(type, superType, checked);
}
-}
+
+ public static List<IType> getSupperTypes(IType type) throws JavaModelException {
+ ITypeHierarchy typeHierarchy = type.newSupertypeHierarchy(new NullProgressMonitor());
+ IType[] superTypes = typeHierarchy == null ? null : typeHierarchy.getAllSupertypes(type);
+ if(superTypes == null) {
+ return Collections.emptyList();
+ }
+ List<IType> suppers = new ArrayList<IType>();
+ for (int i = 0; i < superTypes.length; i++) {
+ suppers.add(superTypes[i]);
+ }
+ return suppers;
+ }
+}
\ No newline at end of file
More information about the jbosstools-commits
mailing list