Author: scabanovich
Date: 2011-09-21 20:37:04 -0400 (Wed, 21 Sep 2011)
New Revision: 34941
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.changed
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.original
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/ProducerI.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p1/
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p1/I.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p2/
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p2/I.java
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/DependentProjectTest.java
Log:
JBIDE-9757
https://issues.jboss.org/browse/JBIDE-9757
Type cache in dependent cdi project is cleaned.
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.changed
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.changed
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.changed 2011-09-22
00:37:04 UTC (rev 34941)
@@ -0,0 +1,11 @@
+package test;
+
+import javax.inject.Inject;
+
+import test.p2.I;
+
+public class BeanI {
+
+ @Inject I i;
+
+}
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.java 2011-09-22
00:37:04 UTC (rev 34941)
@@ -0,0 +1,11 @@
+package test;
+
+import javax.inject.Inject;
+
+import test.p1.I;
+
+public class BeanI {
+
+ @Inject I i;
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.original
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.original
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/BeanI.original 2011-09-22
00:37:04 UTC (rev 34941)
@@ -0,0 +1,11 @@
+package test;
+
+import javax.inject.Inject;
+
+import test.p1.I;
+
+public class BeanI {
+
+ @Inject I i;
+
+}
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/ProducerI.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/ProducerI.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/ProducerI.java 2011-09-22
00:37:04 UTC (rev 34941)
@@ -0,0 +1,14 @@
+package test;
+
+import javax.enterprise.inject.Produces;
+
+import test.p1.I;
+
+public class ProducerI {
+
+ @Produces
+ I getI() {
+ return null;
+ }
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/ProducerI.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p1/I.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p1/I.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p1/I.java 2011-09-22
00:37:04 UTC (rev 34941)
@@ -0,0 +1,5 @@
+package test.p1;
+
+public interface I {
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p1/I.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p2/I.java
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p2/I.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p2/I.java 2011-09-22
00:37:04 UTC (rev 34941)
@@ -0,0 +1,5 @@
+package test.p2;
+
+public interface I {
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/projects/CDITest2/src/test/p2/I.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/DependentProjectTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/DependentProjectTest.java 2011-09-22
00:28:43 UTC (rev 34940)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/DependentProjectTest.java 2011-09-22
00:37:04 UTC (rev 34941)
@@ -320,6 +320,58 @@
assertTrue(n3.getCDIProjects().contains(n2));
}
+ /**
+ * A dependent project creates its own bean objects for type definitions obtained from
used projects.
+ * These separate instances of the same bean should be actual after changes to bean
type.
+ * This test accesses an injection point in a bean through two different projects,
+ * one project (project2) declares that bean type and the other project (project3)
depends on it.
+ * Bean type is slightly modified - so that field type is resolved to Java type with the
same
+ * element name, but in another package.
+ *
+ * Test checks that there is no 'sticking' of out-of-date type in bean instance
+ * of the dependent project.
+ *
+ * @throws CoreException
+ */
+ public void testResolvingInjections() throws CoreException {
+ ICDIProject cdi2 = CDICorePlugin.getCDIProject(project2, true);
+ ICDIProject cdi3 = CDICorePlugin.getCDIProject(project3, true);
+
+ IInjectionPoint point2 = getInjectionPointField(cdi2, "/src/test/BeanI.java",
"i");
+ assertNotNull(point2);
+ Set<IBean> bs2 = cdi2.getBeans(false, point2);
+ assertEquals(1, bs2.size());
+
+ IInjectionPoint point3 = getInjectionPointField(cdi3, project2,
"/src/test/BeanI.java", "i");
+ assertNotNull(point3);
+ Set<IBean> bs3 = cdi3.getBeans(false, point3);
+ assertEquals(1, bs3.size());
+
+ RemoveJarFromClasspathTest.replaceFile(project2, "/src/test/BeanI.changed",
"/src/test/BeanI.java");
+
+ point2 = getInjectionPointField(cdi2, "/src/test/BeanI.java",
"i");
+ assertNotNull(point2);
+ bs2 = cdi2.getBeans(false, point2);
+ assertEquals(0, bs2.size());
+
+ point3 = getInjectionPointField(cdi3, project2, "/src/test/BeanI.java",
"i");
+ assertNotNull(point3);
+ bs3 = cdi3.getBeans(false, point3);
+ assertEquals(0, bs3.size());
+
+ RemoveJarFromClasspathTest.replaceFile(project2, "/src/test/BeanI.original",
"/src/test/BeanI.java");
+
+ point2 = getInjectionPointField(cdi2, "/src/test/BeanI.java",
"i");
+ assertNotNull(point2);
+ bs2 = cdi2.getBeans(false, point2);
+ assertEquals(1, bs2.size());
+
+ point3 = getInjectionPointField(cdi3, project2, "/src/test/BeanI.java",
"i");
+ assertNotNull(point3);
+ bs3 = cdi3.getBeans(false, point3);
+ assertEquals(1, bs3.size());
+ }
+
public void testCleanDependentProject() throws CoreException, IOException {
ICDIProject cdi2 = CDICorePlugin.getCDIProject(project2, true);
boolean saveAutoBuild = ResourcesUtils.setBuildAutomatically(false);
@@ -332,9 +384,12 @@
ResourcesUtils.setBuildAutomatically(saveAutoBuild);
}
+ public static IInjectionPointField getInjectionPointField(ICDIProject cdi, String
beanClassFilePath, String fieldName) {
+ return getInjectionPointField(cdi, cdi.getNature().getProject(), beanClassFilePath,
fieldName);
+ }
- public static IInjectionPointField getInjectionPointField(ICDIProject cdi, String
beanClassFilePath, String fieldName) {
- IFile file = cdi.getNature().getProject().getFile(beanClassFilePath);
+ public static IInjectionPointField getInjectionPointField(ICDIProject cdi, IProject
project, String beanClassFilePath, String fieldName) {
+ IFile file = project.getFile(beanClassFilePath);
Set<IBean> beans = cdi.getBeans(file.getFullPath());
Iterator<IBean> it = beans.iterator();
while(it.hasNext()) {