[jbosstools-commits] JBoss Tools SVN: r30446 - in trunk/cdi: plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl and 2 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Fri Apr 8 19:43:06 EDT 2011


Author: scabanovich
Date: 2011-04-08 19:43:06 -0400 (Fri, 08 Apr 2011)
New Revision: 30446

Added:
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BuiltInBean.java
   trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/BuiltInBeanInjectionTest.java
Modified:
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIConstants.java
   trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java
   trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/CDICoreAllTests.java
Log:
JBIDE-8697
https://issues.jboss.org/browse/JBIDE-8697

Modified: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIConstants.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIConstants.java	2011-04-08 21:31:55 UTC (rev 30445)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIConstants.java	2011-04-08 23:43:06 UTC (rev 30446)
@@ -83,6 +83,11 @@
 
 	public String EVENT_TYPE_NAME = "javax.enterprise.event.Event";
 
+	public String USER_TRANSACTION_TYPE_NAME = "javax.transaction.UserTransaction";
+	public String PRINCIPAL_TYPE_NAME = "java.security.Principal";
+	public String VALIDATION_FACTORY_TYPE_NAME = "javax.validation.ValidatorFactory";
+	public String VALIDATOR_TYPE_NAME = "javax.validation.Validator";
+
 	public String ANNOTATION_LITERAL_TYPE_NAME = "javax.enterprise.util.AnnotationLiteral";
 
 	public String WELD_BEAN_MANAGER_TYPE_NAME = "org.jboss.weld.manager.BeanManagerImpl";

Added: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BuiltInBean.java
===================================================================
--- trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BuiltInBean.java	                        (rev 0)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BuiltInBean.java	2011-04-08 23:43:06 UTC (rev 30446)
@@ -0,0 +1,166 @@
+package org.jboss.tools.cdi.internal.core.impl;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.jdt.core.IType;
+import org.jboss.tools.cdi.core.CDIConstants;
+import org.jboss.tools.cdi.core.IAnnotationDeclaration;
+import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.core.IInjectionPoint;
+import org.jboss.tools.cdi.core.IParametedType;
+import org.jboss.tools.cdi.core.IQualifier;
+import org.jboss.tools.cdi.core.IQualifierDeclaration;
+import org.jboss.tools.cdi.core.IScope;
+import org.jboss.tools.cdi.core.IScopeDeclaration;
+import org.jboss.tools.cdi.core.IStereotypeDeclaration;
+import org.jboss.tools.cdi.core.ITypeDeclaration;
+import org.jboss.tools.common.text.ITextSourceReference;
+
+/**
+ * 3.6. Additional built-in beans.
+
+ * scope @ Dependent,
+ * no bean EL name
+ * 
+ * @author Viacheslav Kabanovich
+ *
+ */
+public class BuiltInBean extends CDIElement implements IBean {
+	protected IParametedType type;
+	protected Set<IQualifier> qualifiers = null;
+	
+	public BuiltInBean(IParametedType type) {
+		this.type = type;
+	}
+
+	public IScope getScope() {
+		return getCDIProject().getScope(CDIConstants.DEPENDENT_ANNOTATION_TYPE_NAME);
+	}
+
+	public Set<IScopeDeclaration> getScopeDeclarations() {
+		return new HashSet<IScopeDeclaration>();
+	}
+
+	public Set<IStereotypeDeclaration> getStereotypeDeclarations() {
+		return new HashSet<IStereotypeDeclaration>();
+	}
+
+	public List<IAnnotationDeclaration> getAnnotations() {
+		return new ArrayList<IAnnotationDeclaration>();
+	}
+
+	public IAnnotationDeclaration getAnnotation(String annotationTypeName) {
+		return null;
+	}
+
+	public ITextSourceReference getAnnotationPosition(String annotationTypeName) {
+		return null;
+	}
+
+	public boolean isAnnotationPresent(String annotationTypeName) {
+		return false;
+	}
+
+	public IType getBeanClass() {
+		return type.getType();
+	}
+
+	public String getName() {
+		return null;
+	}
+
+	public ITextSourceReference getNameLocation() {
+		return null;
+	}
+
+	public Set<IParametedType> getLegalTypes() {
+		return getAllTypes();
+	}
+
+	public Set<IParametedType> getAllTypes() {
+		Set<IParametedType> result = new HashSet<IParametedType>();
+		result.add(type);
+		return result;
+	}
+
+	public Set<ITypeDeclaration> getAllTypeDeclarations() {
+		return new HashSet<ITypeDeclaration>();
+	}
+
+	public Set<ITypeDeclaration> getRestrictedTypeDeclaratios() {
+		return new HashSet<ITypeDeclaration>();
+	}
+
+	public Set<IQualifierDeclaration> getQualifierDeclarations() {
+		return new HashSet<IQualifierDeclaration>();
+	}
+
+	public Set<IQualifierDeclaration> getQualifierDeclarations(boolean includeInherited) {
+		return new HashSet<IQualifierDeclaration>();
+	}
+
+	public Set<IQualifier> getQualifiers() {
+		if(qualifiers == null) {
+			computeQualifiers();
+		}
+		return qualifiers;
+	}
+	
+	protected void computeQualifiers() {
+		qualifiers = new HashSet<IQualifier>();
+	}
+
+	public boolean isAlternative() {
+		return false;
+	}
+
+	public boolean isSelectedAlternative() {
+		return false;
+	}
+
+	public IAnnotationDeclaration getAlternativeDeclaration() {
+		return null;
+	}
+
+	public Set<IInjectionPoint> getInjectionPoints() {
+		return new HashSet<IInjectionPoint>();
+	}
+
+	public IBean getSpecializedBean() {
+		return null;
+	}
+
+	public IAnnotationDeclaration getSpecializesAnnotationDeclaration() {
+		return null;
+	}
+
+	public boolean isSpecializing() {
+		return false;
+	}
+
+	public boolean isDependent() {
+		return true;
+	}
+
+	public boolean isEnabled() {
+		return true;
+	}
+
+	public boolean isNullable() {
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.jboss.tools.cdi.core.IBean#getSimpleJavaName()
+	 */
+	public String getSimpleJavaName() {
+		if(type!=null) {
+			return type.getSimpleName();
+		}
+		return "";
+	}
+}
\ No newline at end of file


Property changes on: trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/BuiltInBean.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

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	2011-04-08 21:31:55 UTC (rev 30445)
+++ trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/impl/CDIProject.java	2011-04-08 23:43:06 UTC (rev 30446)
@@ -330,6 +330,21 @@
 				}				
 			}
 		}
+	
+		if(isBuiltIn(type.getType())) {
+			Set<IBean> rslt = null;
+			if(isParameter) {
+				rslt = getBeans(attemptToResolveAmbiguousDependency, type, qs2.toArray(new IType[0]));
+			} else {
+				rslt = getBeans(attemptToResolveAmbiguousDependency, type, qs.toArray(new IQualifierDeclaration[0]));
+			}
+			if(rslt != null && !rslt.isEmpty()) return rslt;
+			BuiltInBean builtInBean = new BuiltInBean(type);
+			builtInBean.setParent(this);
+			builtInBean.setSourcePath(injectionPoint.getSourcePath());
+			result.add(builtInBean);
+			return result;
+		}
 		
 		Set<IBean> beans = new HashSet<IBean>();
 		synchronized(allBeans) {
@@ -381,6 +396,17 @@
 		return getResolvedBeans(result, attemptToResolveAmbiguousDependency);
 	}
 
+	static Set<String> BUILT_IN = new HashSet<String>();
+	static {
+		BUILT_IN.add(CDIConstants.USER_TRANSACTION_TYPE_NAME);
+		BUILT_IN.add(CDIConstants.PRINCIPAL_TYPE_NAME);
+		BUILT_IN.add(CDIConstants.VALIDATION_FACTORY_TYPE_NAME);
+		BUILT_IN.add(CDIConstants.VALIDATOR_TYPE_NAME);
+	}
+	static boolean isBuiltIn(IType type) {
+		return type != null && BUILT_IN.contains(type.getFullyQualifiedName());
+	}
+
 	public static boolean containsType(Set<IParametedType> types, IParametedType type) {
 		if(type == null) {
 			return false;

Modified: trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/CDICoreAllTests.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/CDICoreAllTests.java	2011-04-08 21:31:55 UTC (rev 30445)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/CDICoreAllTests.java	2011-04-08 23:43:06 UTC (rev 30446)
@@ -21,6 +21,7 @@
 import org.jboss.tools.cdi.core.test.tck.AssignabilityOfRawAndParameterizedTypesTest;
 import org.jboss.tools.cdi.core.test.tck.BeanDefinitionTest;
 import org.jboss.tools.cdi.core.test.tck.BeanSpecializationTest;
+import org.jboss.tools.cdi.core.test.tck.BuiltInBeanInjectionTest;
 import org.jboss.tools.cdi.core.test.tck.DecoratorDefinitionTest;
 import org.jboss.tools.cdi.core.test.tck.DefaultNamedTest;
 import org.jboss.tools.cdi.core.test.tck.DynamicLookupTest;
@@ -83,6 +84,7 @@
 		suite.addTestSuite(InterceptorDefinitionTest.class);
 		suite.addTestSuite(DecoratorDefinitionTest.class);
 		suite.addTestSuite(ObserverMethodResolutionTest.class);
+		suite.addTestSuite(BuiltInBeanInjectionTest.class);
 		suite.addTestSuite(BeansXmlCATest.class);
 		suite.addTestSuite(SelectedAlternativeTest.class);
 

Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/BuiltInBeanInjectionTest.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/BuiltInBeanInjectionTest.java	                        (rev 0)
+++ trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/BuiltInBeanInjectionTest.java	2011-04-08 23:43:06 UTC (rev 30446)
@@ -0,0 +1,94 @@
+/******************************************************************************* 
+ * Copyright (c) 2010 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, 
+ * and is available at http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ * Contributors: 
+ * Red Hat, Inc. - initial API and implementation 
+ ******************************************************************************/
+package org.jboss.tools.cdi.core.test.tck;
+
+import java.util.Set;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jdt.core.IClassFile;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.compiler.IProblem;
+import org.jboss.tools.cdi.core.CDIConstants;
+import org.jboss.tools.cdi.core.IBean;
+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.IObserverMethod;
+import org.jboss.tools.cdi.core.IParameter;
+import org.jboss.tools.cdi.core.IQualifier;
+import org.jboss.tools.cdi.internal.core.impl.BuiltInBean;
+import org.jboss.tools.common.model.util.EclipseJavaUtil;
+import org.jboss.tools.common.model.util.EclipseResourceUtil;
+
+/**
+ * @author Viacheslav Kabanovich
+ */
+public class BuiltInBeanInjectionTest extends TCKTest {
+
+	public void testUserTransactionBean() {
+		// javax.transaction.UserTransaction
+		IInjectionPointField field =  getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/implementation/builtin/UserTransactionInjectedBean.java", "userTransaction");
+		assertNotNull(field);
+		
+		IProject p = cdiProject.getNature().getProject();
+		IJavaProject jp = EclipseResourceUtil.getJavaProject(p);
+		
+		Set<IBean> beans = field.getCDIProject().getBeans(false, field);
+		assertFalse(beans.isEmpty());
+
+		IBean b = beans.iterator().next();
+		assertTrue(b instanceof BuiltInBean);
+		IType t = b.getBeanClass();
+		assertEquals("javax.transaction.UserTransaction", t.getFullyQualifiedName());
+
+		
+		// javax.validation.ValidatorFactory
+		field =  getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/implementation/builtin/DefaultValidatorFactoryInjectedBean.java", "defaultValidatorFactory");
+		assertNotNull(field);
+		
+		beans = field.getCDIProject().getBeans(false, field);
+		assertFalse(beans.isEmpty());
+
+		b = beans.iterator().next();
+		assertTrue(b instanceof BuiltInBean);
+		t = b.getBeanClass();
+		assertEquals("javax.validation.ValidatorFactory", t.getFullyQualifiedName());
+
+		// javax.validation.Validator
+		field =  getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/implementation/builtin/DefaultValidatorInjectedBean.java", "defaultValidator");
+		assertNotNull(field);
+		
+		beans = field.getCDIProject().getBeans(false, field);
+		assertFalse(beans.isEmpty());
+
+		b = beans.iterator().next();
+		assertTrue(b instanceof BuiltInBean);
+		t = b.getBeanClass();
+		assertEquals("javax.validation.Validator", t.getFullyQualifiedName());
+
+		// java.security.Principal
+		field =  getInjectionPointField("JavaSource/org/jboss/jsr299/tck/tests/implementation/builtin/PrincipalInjectedBean.java", "principal");
+		assertNotNull(field);
+		
+		beans = field.getCDIProject().getBeans(false, field);
+		assertFalse(beans.isEmpty());
+
+		b = beans.iterator().next();
+		assertTrue(b instanceof BuiltInBean);
+		t = b.getBeanClass();
+		assertEquals("java.security.Principal", t.getFullyQualifiedName());
+
+	
+	}
+
+}
\ No newline at end of file


Property changes on: trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/BuiltInBeanInjectionTest.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain



More information about the jbosstools-commits mailing list