Author: scabanovich
Date: 2010-12-17 11:43:44 -0500 (Fri, 17 Dec 2010)
New Revision: 27592
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/WDecorator.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/XDecorator.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/YDecorator.java
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/ZDecorator.java
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/DecoratorDefinitionTest.java
Log:
JBIDE-7844
https://issues.jboss.org/browse/JBIDE-7844
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/WDecorator.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/WDecorator.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/WDecorator.java 2010-12-17
16:43:44 UTC (rev 27592)
@@ -0,0 +1,11 @@
+package org.jboss.jsr299.tck.tests.decorators.definition.broken.cycle;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+@Decorator
+public class WDecorator extends YDecorator {
+ @Inject @Delegate WDecorator decorator;
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/WDecorator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/XDecorator.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/XDecorator.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/XDecorator.java 2010-12-17
16:43:44 UTC (rev 27592)
@@ -0,0 +1,11 @@
+package org.jboss.jsr299.tck.tests.decorators.definition.broken.cycle;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+@Decorator
+public class XDecorator extends XDecorator {
+ @Inject @Delegate XDecorator decorator;
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/XDecorator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/YDecorator.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/YDecorator.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/YDecorator.java 2010-12-17
16:43:44 UTC (rev 27592)
@@ -0,0 +1,11 @@
+package org.jboss.jsr299.tck.tests.decorators.definition.broken.cycle;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+@Decorator
+public class YDecorator extends ZDecorator {
+ @Inject @Delegate YDecorator decorator;
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/YDecorator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/ZDecorator.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/ZDecorator.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/ZDecorator.java 2010-12-17
16:43:44 UTC (rev 27592)
@@ -0,0 +1,11 @@
+package org.jboss.jsr299.tck.tests.decorators.definition.broken.cycle;
+
+import javax.decorator.Decorator;
+import javax.decorator.Delegate;
+import javax.inject.Inject;
+
+@Decorator
+public class ZDecorator extends YDecorator {
+ @Inject @Delegate ZDecorator decorator;
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/resources/tck/tests/decorators/definition/broken/cycle/ZDecorator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/DecoratorDefinitionTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/DecoratorDefinitionTest.java 2010-12-17
15:54:05 UTC (rev 27591)
+++
trunk/cdi/tests/org.jboss.tools.cdi.core.test/src/org/jboss/tools/cdi/core/test/tck/DecoratorDefinitionTest.java 2010-12-17
16:43:44 UTC (rev 27592)
@@ -21,6 +21,7 @@
import org.jboss.tools.cdi.core.IInjectionPoint;
import org.jboss.tools.cdi.core.IParametedType;
import org.jboss.tools.cdi.internal.core.impl.CDIProject;
+import org.jboss.tools.cdi.internal.core.impl.ClassBean;
/**
* @author Alexey Kazakov
@@ -88,4 +89,38 @@
public void testCustomDecorator() throws CoreException {
getDecorator("JavaSource/org/jboss/jsr299/tck/tests/decorators/custom/VehicleDecorator.java");
}
+
+ /**
+ * class XDecorator extends XDecorator
+ * class YDecorator extends ZDecorator
+ * class ZDecorator extends YDecorator
+ * class WDecorator extends YDecorator
+ *
+ * When cyclic (erroneous) java hierarchy takes place, cdi should avoid cyclic
dependency
+ * in components. Loader, when detects that setting super bean is going to create the
cyclic
+ * dependency, sets null instead.
+ * For the example above that means:
+ * a) XDecorator will have super set to null;
+ * b) Of YDecorator, ZDecorator exactly one will have super set to null, and the other
will
+ * have the correct super, which one being depended on random order or loaded
resources;
+ * c) WDecorator will have super set to YDecorator, since it is outside of the loop.
+ *
+ * @throws CoreException
+ */
+ public void testCyclicDependencies() throws CoreException {
+ IDecorator xdecorator =
getDecorator("JavaSource/org/jboss/jsr299/tck/tests/decorators/definition/broken/cycle/XDecorator.java");
+ assertNotNull(xdecorator);
+ ClassBean xs = ((ClassBean)xdecorator).getSuperClassBean();
+ assertNull(xs);
+ IDecorator ydecorator =
getDecorator("JavaSource/org/jboss/jsr299/tck/tests/decorators/definition/broken/cycle/YDecorator.java");
+ ClassBean ys = ((ClassBean)ydecorator).getSuperClassBean();
+ IDecorator zdecorator =
getDecorator("JavaSource/org/jboss/jsr299/tck/tests/decorators/definition/broken/cycle/ZDecorator.java");
+ ClassBean zs = ((ClassBean)zdecorator).getSuperClassBean();
+ IDecorator wdecorator =
getDecorator("JavaSource/org/jboss/jsr299/tck/tests/decorators/definition/broken/cycle/WDecorator.java");
+ ClassBean ws = ((ClassBean)wdecorator).getSuperClassBean();
+ assertTrue((ys == null) != (zs == null));
+ assertTrue((ys == zdecorator) || (zs == ydecorator));
+ assertTrue(ws == ydecorator);
+ }
+
}
\ No newline at end of file