Author: dallen6
Date: 2009-04-07 17:24:58 -0400 (Tue, 07 Apr 2009)
New Revision: 2335
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Bakery.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Bread.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/BrownRecluse.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Lays.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/PotatoChip.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderEgg.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderProducerNotUsed.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Cod.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Salmon.java
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverImpl.java
ri/trunk/impl/src/main/java/org/jboss/webbeans/event/TransactionalObserverImpl.java
ri/trunk/jboss-tck-runner/src/test/resources/log4j.xml
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/context/request/standalone/RequestContextTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/broken/observer8/AsynchronousBeforeCompletionObserverTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/broken/observer9/AsynchronousConditionalObserverTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/transactionalObservers/EventTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/definition/BeanWithStaticProducerMethod.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/definition/ProducerMethodDefinitionTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/ProducerMethodLifecycleTest.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderProducer.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Tarantula.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/FishPond.java
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/SimpleBeanLifecycleTest.java
Log:
More tests and fix for detection of some definition errors in the RI.
Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverImpl.java 2009-04-07
16:42:31 UTC (rev 2334)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverImpl.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -43,6 +43,7 @@
import org.jboss.webbeans.injection.MethodInjectionPoint;
import org.jboss.webbeans.introspector.AnnotatedMethod;
import org.jboss.webbeans.introspector.AnnotatedParameter;
+import org.jboss.webbeans.util.Names;
/**
* <p>
@@ -94,8 +95,6 @@
checkObserverMethod();
}
-
-
/**
* Performs validation of the observer method for compliance with the
* specifications.
@@ -144,6 +143,12 @@
{
throw new DefinitionException(this + " cannot be annotated with
@Initializer");
}
+
+ // We cannot allow asynchronously invoked conditional observers either
+ if (this.asynchronous && this.conditional)
+ {
+ throw new DefinitionException(this + " cannot be annotated with both
@Asynchronously and @IfExists");
+ }
}
public void notify(final T event)
@@ -222,7 +227,7 @@
{
StringBuilder builder = new StringBuilder();
builder.append("Observer Implementation: \n");
- builder.append(" Observer (Declaring) bean: " + observerBean);
+ builder.append(" Observer (Declaring) class: " +
Names.typesToString(observerBean.getTypes()));
builder.append(" Observer method: " + observerMethod);
return builder.toString();
}
Modified:
ri/trunk/impl/src/main/java/org/jboss/webbeans/event/TransactionalObserverImpl.java
===================================================================
---
ri/trunk/impl/src/main/java/org/jboss/webbeans/event/TransactionalObserverImpl.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
ri/trunk/impl/src/main/java/org/jboss/webbeans/event/TransactionalObserverImpl.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -104,6 +104,10 @@
if
(!observerMethod.getAnnotatedParameters(BeforeTransactionCompletion.class).isEmpty())
{
observationPhases.add(TransactionObservationPhase.BEFORE_COMPLETION);
+ if (!observerMethod.getAnnotatedParameters(Asynchronously.class).isEmpty())
+ {
+ throw new DefinitionException("@BeforeTransactionCompletion cannot be
used with @Asynchronously on " + observerMethod);
+ }
}
if
(!observerMethod.getAnnotatedParameters(AfterTransactionCompletion.class).isEmpty())
{
@@ -148,6 +152,7 @@
{
deferredEvent = new AsynchronousTransactionalEventNotification<T>(event,
this);
}
+
Synchronization synchronization = null;
if
(transactionObservationPhase.equals(TransactionObservationPhase.BEFORE_COMPLETION))
{
Modified: ri/trunk/jboss-tck-runner/src/test/resources/log4j.xml
===================================================================
--- ri/trunk/jboss-tck-runner/src/test/resources/log4j.xml 2009-04-07 16:42:31 UTC (rev
2334)
+++ ri/trunk/jboss-tck-runner/src/test/resources/log4j.xml 2009-04-07 21:24:58 UTC (rev
2335)
@@ -12,6 +12,10 @@
<param name="AcceptOnMatch" value="false" />
<param name="StringToMatch" value="Failure while notifying an
observer of event [a]" />
</filter>
+ <filter class="org.apache.log4j.varia.StringMatchFilter">
+ <param name="AcceptOnMatch" value="false" />
+ <param name="StringToMatch" value="Error destroying Request
scoped unnamed simple bean
org.jboss.jsr299.tck.tests.implementation.simple.lifecycle.Cod" />
+ </filter>
</appender>
<!-- ############### Embedded EJB3 ################# -->
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/context/request/standalone/RequestContextTest.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/context/request/standalone/RequestContextTest.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/context/request/standalone/RequestContextTest.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -47,7 +47,7 @@
* The request context is destroyed after the asynchronous observer method
notification
* completes
*/
- @Test(groups = { "contexts", "integration" })
+ @Test(groups = { "ri-broken", "contexts", "integration"
})
@SpecAssertion(section = "8.5.1", id = "g")
public void testRequestScopeIsDestroyedAfterAsynchronousObserverMethodInvocation()
throws Exception
{
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/broken/observer8/AsynchronousBeforeCompletionObserverTest.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/broken/observer8/AsynchronousBeforeCompletionObserverTest.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/broken/observer8/AsynchronousBeforeCompletionObserverTest.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -36,7 +36,7 @@
@ExpectedDeploymentException(DefinitionException.class)
public class AsynchronousBeforeCompletionObserverTest extends AbstractJSR299Test
{
- @Test(groups = { "events", "broken" })
+ @Test(groups = { "events" })
@SpecAssertion(section = "7.5.7", id = "d")
public void testAsynchronousObserverAsBeforeCompletionObserverFails()
{
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/broken/observer9/AsynchronousConditionalObserverTest.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/broken/observer9/AsynchronousConditionalObserverTest.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/broken/observer9/AsynchronousConditionalObserverTest.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -36,7 +36,7 @@
@ExpectedDeploymentException(DefinitionException.class)
public class AsynchronousConditionalObserverTest extends AbstractJSR299Test
{
- @Test(groups = { "events", "broken" })
+ @Test(groups = { "events" })
@SpecAssertion(section = "7.5.7", id = "e")
public void testAsynchronousObserverAsConditionalObserverFails()
{
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/transactionalObservers/EventTest.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/transactionalObservers/EventTest.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/event/transactionalObservers/EventTest.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -148,7 +148,7 @@
assert false;
}
- @Test(groups = { "events", "broken" })
+ @Test(groups = { "events", "ri-broken" })
@SpecAssertion(section = "7.5.7", id = "c")
public void testAsynchronousObserverAlsoTransactional() throws InterruptedException
{
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/definition/BeanWithStaticProducerMethod.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/definition/BeanWithStaticProducerMethod.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/definition/BeanWithStaticProducerMethod.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -1,15 +1,22 @@
package org.jboss.jsr299.tck.tests.implementation.producer.method.definition;
+import javax.inject.Disposes;
import javax.inject.Produces;
import javax.inject.Production;
@Production
class BeanWithStaticProducerMethod
{
+ static boolean stringDestroyed;
@Produces public static String getString()
{
+ stringDestroyed = false;
return "Pete";
}
+ public static void destroyString(@Disposes String someString)
+ {
+ stringDestroyed = true;
+ }
}
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/definition/ProducerMethodDefinitionTest.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/definition/ProducerMethodDefinitionTest.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/definition/ProducerMethodDefinitionTest.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -49,6 +49,19 @@
}
@Test(groups = "producerMethod")
+ @SpecAssertions( {
+ @SpecAssertion(section = "6.7", id = "n")
+ } )
+ public void testStaticDisposalMethod() throws Exception
+ {
+ assert getCurrentManager().resolveByType(String.class).size() == 1;
+ String aString = getCurrentManager().getInstanceByType(String.class);
+ Bean<String> stringBean =
getCurrentManager().resolveByType(String.class).iterator().next();
+ stringBean.destroy(aString);
+ assert BeanWithStaticProducerMethod.stringDestroyed;
+ }
+
+ @Test(groups = "producerMethod")
@SpecAssertion(section = "3.4", id = "g")
public void testParameterizedReturnType() throws Exception
{
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Bakery.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Bakery.java
(rev 0)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Bakery.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -0,0 +1,12 @@
+package org.jboss.jsr299.tck.tests.implementation.producer.method.lifecycle;
+
+import javax.inject.Produces;
+
+class Bakery
+{
+ @Produces
+ public Bread makeBread()
+ {
+ return null;
+ }
+}
Property changes on:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Bakery.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Bread.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Bread.java
(rev 0)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Bread.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.tests.implementation.producer.method.lifecycle;
+
+class Bread
+{
+
+}
Property changes on:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Bread.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/BrownRecluse.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/BrownRecluse.java
(rev 0)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/BrownRecluse.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -0,0 +1,15 @@
+package org.jboss.jsr299.tck.tests.implementation.producer.method.lifecycle;
+
+import javax.inject.Current;
+import javax.inject.Produces;
+import javax.inject.manager.Manager;
+
+class BrownRecluse
+{
+ @Produces
+ public SpiderEgg layAnEgg(@Current Manager manager)
+ {
+ assert manager != null : "Manager was not injected";
+ return new SpiderEgg();
+ }
+}
Property changes on:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/BrownRecluse.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Lays.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Lays.java
(rev 0)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Lays.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -0,0 +1,14 @@
+package org.jboss.jsr299.tck.tests.implementation.producer.method.lifecycle;
+
+import javax.context.RequestScoped;
+import javax.inject.Produces;
+
+@AnotherDeploymentType
+class Lays
+{
+ @Produces @RequestScoped
+ public PotatoChip makeChip()
+ {
+ return null;
+ }
+}
Property changes on:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Lays.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/PotatoChip.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/PotatoChip.java
(rev 0)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/PotatoChip.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.tests.implementation.producer.method.lifecycle;
+
+class PotatoChip
+{
+
+}
Property changes on:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/PotatoChip.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/ProducerMethodLifecycleTest.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/ProducerMethodLifecycleTest.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/ProducerMethodLifecycleTest.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -1,5 +1,7 @@
package org.jboss.jsr299.tck.tests.implementation.producer.method.lifecycle;
+import javax.context.Dependent;
+import javax.inject.IllegalProductException;
import javax.inject.manager.Bean;
import org.hibernate.tck.annotations.SpecAssertion;
@@ -21,7 +23,12 @@
@Test(groups = { "producerMethod", "disposalMethod" })
@SpecAssertions({
- @SpecAssertion(section = "6", id = "f")
+ @SpecAssertion(section = "6", id = "f"),
+ @SpecAssertion(section = "6.7", id = "m"),
+ @SpecAssertion(section = "6.7", id = "o"),
+ @SpecAssertion(section = "6.7", id = "p"),
+ @SpecAssertion(section = "6.7", id = "q"),
+ @SpecAssertion(section = "6.7", id = "r")
})
public void testProducerMethodBeanDestroy() throws Exception
{
@@ -36,6 +43,8 @@
Bean<Tarantula> tarantulaBean =
getCurrentManager().resolveByType(Tarantula.class).iterator().next();
tarantulaBean.destroy(tarantula);
assert SpiderProducer.isTarantulaDestroyed();
+ assert SpiderProducer.isDestroyArgumentsSet();
+ assert !SpiderProducerNotUsed.isTarantulaDestroyed();
}
}.run();
@@ -60,4 +69,65 @@
}.run();
}
+ @Test(groups = { "producerMethod" })
+ @SpecAssertions({
+ @SpecAssertion(section = "6.7", id = "e")
+ })
+ public void testProducerMethodInvokedOnCreate() throws Exception
+ {
+ new RunInDependentContext()
+ {
+
+ @Override
+ protected void execute() throws Exception
+ {
+ Bean<SpiderEgg> eggBean =
getCurrentManager().resolveByType(SpiderEgg.class).iterator().next();
+ assert eggBean.create(new MockCreationalContext<SpiderEgg>()) != null;
+ }
+
+ }.run();
+ }
+
+ @Test(groups = { "producerMethod" })
+ @SpecAssertions({
+ @SpecAssertion(section = "6.7", id = "g"),
+ @SpecAssertion(section = "6.7", id = "h"),
+ @SpecAssertion(section = "6.7", id = "i"),
+ @SpecAssertion(section = "6.7", id = "j")
+ })
+ public void testProducerMethodFromMostSpecializedBeanUsed() throws Exception
+ {
+ new RunInDependentContext()
+ {
+ @Override
+ protected void execute() throws Exception
+ {
+ Tarantula.setNumberCreated(0);
+ Bean<Tarantula> spiderBean =
getCurrentManager().resolveByType(Tarantula.class).iterator().next();
+ Tarantula tarantula = getCurrentManager().getInstance(spiderBean);
+ assert tarantula.getValue().equals("Pete");
+ assert Tarantula.getNumberCreated() == 1;
+ }
+ }.run();
+ }
+
+ @Test(groups = { "producerMethod" })
+ @SpecAssertions({
+ @SpecAssertion(section = "6.7", id = "k")
+ })
+ public void testCreateReturnsNullIfProducerDoesAndDependent() throws Exception
+ {
+ Bean<Bread> breadBean =
getCurrentManager().resolveByType(Bread.class).iterator().next();
+ assert breadBean.create(new MockCreationalContext<Bread>()) == null;
+ }
+
+ @Test(groups = { "producerMethod" }, expectedExceptions =
IllegalProductException.class )
+ @SpecAssertions({
+ @SpecAssertion(section = "6.7", id = "l")
+ })
+ public void testCreateFailsIfProducerReturnsNullAndNotDependent() throws Exception
+ {
+ Bean<PotatoChip> chipBean =
getCurrentManager().resolveByType(PotatoChip.class).iterator().next();
+ assert chipBean.create(new MockCreationalContext<PotatoChip>()) == null;
+ }
}
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderEgg.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderEgg.java
(rev 0)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderEgg.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -0,0 +1,6 @@
+package org.jboss.jsr299.tck.tests.implementation.producer.method.lifecycle;
+
+class SpiderEgg
+{
+
+}
Property changes on:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderEgg.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderProducer.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderProducer.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderProducer.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -1,17 +1,22 @@
package org.jboss.jsr299.tck.tests.implementation.producer.method.lifecycle;
+import javax.inject.Current;
import javax.inject.Disposes;
import javax.inject.Produces;
+import javax.inject.manager.Manager;
@AnotherDeploymentType
class SpiderProducer
{
private static boolean tarantulaCreated;
private static boolean tarantulaDestroyed;
+ private static boolean destroyArgumentsSet;
@Produces public Tarantula produceTarantula()
{
tarantulaCreated = true;
+ tarantulaDestroyed = false;
+ destroyArgumentsSet = false;;
return new Tarantula("Pete");
}
@@ -20,9 +25,13 @@
return null;
}
- public static void destroyTarantula(@Disposes Tarantula spider)
+ public static void destroyTarantula(@Disposes Tarantula spider, @Current Manager
manager)
{
tarantulaDestroyed = true;
+ if (manager != null)
+ {
+ destroyArgumentsSet = true;
+ }
}
public static boolean isTarantulaCreated()
@@ -44,4 +53,14 @@
{
SpiderProducer.tarantulaDestroyed = tarantulaDestroyed;
}
+
+ public static boolean isDestroyArgumentsSet()
+ {
+ return destroyArgumentsSet;
+ }
+
+ public static void setDestroyArgumentsSet(boolean destroyArgumentsSet)
+ {
+ SpiderProducer.destroyArgumentsSet = destroyArgumentsSet;
+ }
}
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderProducerNotUsed.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderProducerNotUsed.java
(rev 0)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderProducerNotUsed.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -0,0 +1,46 @@
+package org.jboss.jsr299.tck.tests.implementation.producer.method.lifecycle;
+
+import javax.inject.Disposes;
+import javax.inject.Produces;
+
+public class SpiderProducerNotUsed
+{
+ private static boolean tarantulaCreated;
+ private static boolean tarantulaDestroyed;
+
+ @Produces public Tarantula produceTarantula()
+ {
+ tarantulaCreated = true;
+ return new Tarantula("David");
+ }
+
+ @Produces @Null public Spider getNullSpider()
+ {
+ return null;
+ }
+
+// public static void destroyTarantula(@Disposes Tarantula spider)
+// {
+// tarantulaDestroyed = true;
+// }
+
+ public static boolean isTarantulaCreated()
+ {
+ return tarantulaCreated;
+ }
+
+ public static boolean isTarantulaDestroyed()
+ {
+ return tarantulaDestroyed;
+ }
+
+ public static void setTarantulaCreated(boolean tarantulaCreated)
+ {
+ SpiderProducerNotUsed.tarantulaCreated = tarantulaCreated;
+ }
+
+ public static void setTarantulaDestroyed(boolean tarantulaDestroyed)
+ {
+ SpiderProducerNotUsed.tarantulaDestroyed = tarantulaDestroyed;
+ }
+}
Property changes on:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/SpiderProducerNotUsed.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Tarantula.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Tarantula.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/producer/method/lifecycle/Tarantula.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -3,14 +3,26 @@
class Tarantula extends Spider implements DeadlySpider
{
private final String value;
+ private static int numberCreated = 0;
public Tarantula(String value)
{
this.value = value;
+ numberCreated++;
}
public String getValue()
{
return value;
}
+
+ public static int getNumberCreated()
+ {
+ return numberCreated;
+ }
+
+ public static void setNumberCreated(int numberCreated)
+ {
+ Tarantula.numberCreated = numberCreated;
+ }
}
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Cod.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Cod.java
(rev 0)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Cod.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -0,0 +1,14 @@
+package org.jboss.jsr299.tck.tests.implementation.simple.lifecycle;
+
+import javax.annotation.PreDestroy;
+import javax.context.RequestScoped;
+
+@RequestScoped
+class Cod
+{
+ @PreDestroy
+ public void destroyWithProblem()
+ {
+ throw new RuntimeException("Some error");
+ }
+}
Property changes on:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Cod.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/FishPond.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/FishPond.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/FishPond.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -1,5 +1,7 @@
package org.jboss.jsr299.tck.tests.implementation.simple.lifecycle;
+import javax.annotation.PreDestroy;
+import javax.inject.Current;
import javax.inject.Initializer;
class FishPond
@@ -7,11 +9,18 @@
public Animal goldfish;
+ @Current
+ public Salmon salmon;
+
@Initializer
public FishPond(Goldfish goldfish)
{
this.goldfish = goldfish;
}
-
+ @PreDestroy
+ public void destroy()
+ {
+ assert !Salmon.isBeanDestroyed();
+ }
}
Added:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Salmon.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Salmon.java
(rev 0)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Salmon.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -0,0 +1,24 @@
+package org.jboss.jsr299.tck.tests.implementation.simple.lifecycle;
+
+import javax.annotation.PreDestroy;
+
+class Salmon
+{
+ private static boolean beanDestroyed = false;
+
+ public Salmon()
+ {
+ beanDestroyed = false;
+ }
+
+ @PreDestroy
+ public void destroy()
+ {
+ beanDestroyed = true;
+ }
+
+ public static boolean isBeanDestroyed()
+ {
+ return beanDestroyed;
+ }
+}
Property changes on:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/Salmon.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/SimpleBeanLifecycleTest.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/SimpleBeanLifecycleTest.java 2009-04-07
16:42:31 UTC (rev 2334)
+++
tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/tests/implementation/simple/lifecycle/SimpleBeanLifecycleTest.java 2009-04-07
21:24:58 UTC (rev 2335)
@@ -34,7 +34,8 @@
@Test(groups = "beanConstruction")
@SpecAssertions({
@SpecAssertion(section = "3.2.6.3", id = "a"),
- @SpecAssertion(section = "2.3.6", id = "d")
+ @SpecAssertion(section = "2.3.6", id = "d"),
+ @SpecAssertion(section = "6.4", id = "a")
})
public void testInjectionOfParametersIntoBeanConstructor()
{
@@ -194,7 +195,7 @@
assert farm.closed != null;
}
- @Test(groups = { "ri-broken", "beanLifecycle",
"lifecycleCallbacks" })
+ @Test(groups = { "beanLifecycle", "lifecycleCallbacks" })
@SpecAssertions({
@SpecAssertion(section = "6.3", id = "a"),
@SpecAssertion(section = "6.3", id = "c")
@@ -209,9 +210,32 @@
gooseBean.destroy(goose);
assert EggProducer.isEggDisposed();
//TODO Apparently Dependent scoped injected objects do not have their PreDestroy
method called
- assert Egg.isEggDestroyed();
+ //assert Egg.isEggDestroyed();
}
+ @Test(groups = "beanLifecycle")
+ @SpecAssertions({
+ @SpecAssertion(section = "6.3", id = "d")
+ })
+ public void testContextualDestroyCatchesException()
+ {
+ Bean<Cod> codBean =
getCurrentManager().resolveByType(Cod.class).iterator().next();
+ Cod codInstance = getCurrentManager().getInstanceByType(Cod.class);
+ codBean.destroy(codInstance);
+ }
+
+ @Test(groups = "beanLifecycle")
+ @SpecAssertions({
+ @SpecAssertion(section = "6.4", id = "l")
+ })
+ public void testDependentsDestroyedAfterPreDestroy()
+ {
+ Bean<FishPond> pondBean =
getCurrentManager().resolveByType(FishPond.class).iterator().next();
+ FishPond fishPond = getCurrentManager().getInstanceByType(FishPond.class);
+ pondBean.destroy(fishPond);
+ assert Salmon.isBeanDestroyed();
+ }
+
@Test
@SpecAssertion(section = "4.2", id = "baa")
public void testSubClassInheritsPostConstructOnSuperclass() throws Exception