You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2017/10/10 19:53:51 UTC
svn commit: r1811764 - in /openwebbeans/meecrowave/trunk: ./
meecrowave-junit/src/main/java/org/apache/meecrowave/junit/
meecrowave-junit/src/main/java/org/apache/meecrowave/testing/
meecrowave-junit/src/test/java/org/apache/meecrowave/junit/ meecrowav...
Author: struberg
Date: Tue Oct 10 19:53:51 2017
New Revision: 1811764
URL: http://svn.apache.org/viewvc?rev=1811764&view=rev
Log:
MEECROWAVE-71 setup RequestContext and SessionContext for each test
Added:
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java (with props)
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java (with props)
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/resources/
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/resources/META-INF/
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/resources/META-INF/beans.xml (with props)
Modified:
openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java/org/apache/meecrowave/junit/MonoMeecrowave.java
openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java/org/apache/meecrowave/testing/MonoBase.java
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/resources/bin/meecrowave.sh
openwebbeans/meecrowave/trunk/pom.xml
Modified: openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java/org/apache/meecrowave/junit/MonoMeecrowave.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java/org/apache/meecrowave/junit/MonoMeecrowave.java?rev=1811764&r1=1811763&r2=1811764&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java/org/apache/meecrowave/junit/MonoMeecrowave.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java/org/apache/meecrowave/junit/MonoMeecrowave.java Tue Oct 10 19:53:51 2017
@@ -21,15 +21,24 @@ package org.apache.meecrowave.junit;
import org.apache.meecrowave.Meecrowave;
import org.apache.meecrowave.testing.Injector;
import org.apache.meecrowave.testing.MonoBase;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.spi.ContextsService;
import org.junit.rules.MethodRule;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.Statement;
+import javax.enterprise.context.RequestScoped;
+import javax.enterprise.context.SessionScoped;
import javax.enterprise.context.spi.CreationalContext;
import java.util.List;
-// a MeecrowaveRule starting a single container, very awesome for forkCount=1, reuseForks=true
+/**
+ * A MeecrowaveRule starting a single container.
+ * Very awesome for forkCount=1, reuseForks=true
+ *
+ */
+
public class MonoMeecrowave {
private static final MonoBase BASE = new MonoBase();
private static final AutoCloseable NOOP_CLOSEABLE = () -> {
@@ -47,12 +56,18 @@ public class MonoMeecrowave {
@Override
public void evaluate() throws Throwable {
BASE.startIfNeeded();
+ ContextsService contextsService = WebBeansContext.currentInstance().getContextsService();
+
configInjection(test.getClass(), test);
final CreationalContext<?> creationalContext = Injector.inject(test);
try {
+ contextsService.startContext(RequestScoped.class, null);
+ contextsService.startContext(SessionScoped.class, null);
base.evaluate();
} finally {
creationalContext.release();
+ contextsService.endContext(SessionScoped.class, null);
+ contextsService.endContext(RequestScoped.class, null);
}
}
Modified: openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java/org/apache/meecrowave/testing/MonoBase.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java/org/apache/meecrowave/testing/MonoBase.java?rev=1811764&r1=1811763&r2=1811764&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java/org/apache/meecrowave/testing/MonoBase.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java/org/apache/meecrowave/testing/MonoBase.java Tue Oct 10 19:53:51 2017
@@ -27,7 +27,7 @@ import java.util.concurrent.atomic.Atomi
import java.util.stream.StreamSupport;
public class MonoBase {
- private static final AtomicReference<AutoCloseable> CONTAINER = new AtomicReference<>();
+ private static final AtomicReference<Meecrowave> CONTAINER = new AtomicReference<>();
private static final AtomicReference<Meecrowave.Builder> CONFIGURATION = new AtomicReference<>();
public Meecrowave.Builder doBoot() {
@@ -90,6 +90,8 @@ public class MonoBase {
return getConfiguration();
}
+
+
public interface Configuration {
default int order() {
return 0;
Modified: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java?rev=1811764&r1=1811763&r2=1811764&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java Tue Oct 10 19:53:51 2017
@@ -21,9 +21,12 @@ package org.apache.meecrowave.junit;
import org.apache.meecrowave.Meecrowave;
import org.apache.meecrowave.io.IO;
import org.apache.meecrowave.testing.ConfigurationInject;
+import org.app.MyAppClass;
+import org.app.MyReqClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+import javax.inject.Inject;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -38,14 +41,43 @@ public class MonoMeecrowaveRuleTest {
public static final MonoMeecrowave.Rule RULE = new MonoMeecrowave.Rule();
*/
+ private static int count = 0;
+
@ConfigurationInject
private Meecrowave.Builder config;
+ private @Inject MyAppClass appClass;
+ private @Inject MyReqClass reqClass;
+
+
@Test
public void test() throws IOException {
assertEquals("simple", slurp(new URL("http://localhost:" + config.getHttpPort() + "/api/test")));
+
+ testScopes();
+ }
+
+ @Test
+ public void anotherTest() throws IOException {
+ assertEquals("simple", slurp(new URL("http://localhost:" + config.getHttpPort() + "/api/test")));
+
+ testScopes();
+ }
+
+ private void testScopes() {
+ count++;
+
+ if (count == 2) {
+ assertEquals("beenhere", appClass.getX());
+ assertEquals("init", reqClass.getX());
+ }
+ else {
+ reqClass.setX("beenhere");
+ appClass.setX("beenhere");
+ }
}
+
private String slurp(final URL url) {
try (final InputStream is = url.openStream()) {
return IO.toString(is);
@@ -54,4 +86,5 @@ public class MonoMeecrowaveRuleTest {
}
return null;
}
+
}
Added: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java?rev=1811764&view=auto
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java (added)
+++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java Tue Oct 10 19:53:51 2017
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.app;
+
+import javax.enterprise.context.ApplicationScoped;
+
+/**
+ * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
+ */
+@ApplicationScoped
+public class MyAppClass {
+ private String x = "init";
+
+ public String getX() {
+ return x;
+ }
+
+ public void setX(String x) {
+ this.x = x;
+ }
+}
Propchange: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java?rev=1811764&view=auto
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java (added)
+++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java Tue Oct 10 19:53:51 2017
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.app;
+
+import javax.enterprise.context.RequestScoped;
+
+/**
+ * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
+ */
+@RequestScoped
+public class MyReqClass {
+ private String x = "init";
+
+ public String getX() {
+ return x;
+ }
+
+ public void setX(String x) {
+ this.x = x;
+ }
+}
Propchange: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/resources/META-INF/beans.xml
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/resources/META-INF/beans.xml?rev=1811764&view=auto
==============================================================================
(empty)
Propchange: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/resources/META-INF/beans.xml
------------------------------------------------------------------------------
svn:eol-style = native
Modified: openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/resources/bin/meecrowave.sh
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/resources/bin/meecrowave.sh?rev=1811764&r1=1811763&r2=1811764&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/resources/bin/meecrowave.sh (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/resources/bin/meecrowave.sh Tue Oct 10 19:53:51 2017
@@ -209,6 +209,7 @@ if $cygwin; then
MEECROWAVE_BASE=`cygpath --absolute --windows "$MEECROWAVE_BASE"`
MEECROWAVE_TMPDIR=`cygpath --absolute --windows "$MEECROWAVE_TMPDIR"`
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+ JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
fi
if [ -z "$JSSE_OPTS" ] ; then
Modified: openwebbeans/meecrowave/trunk/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/pom.xml?rev=1811764&r1=1811763&r2=1811764&view=diff
==============================================================================
--- openwebbeans/meecrowave/trunk/pom.xml (original)
+++ openwebbeans/meecrowave/trunk/pom.xml Tue Oct 10 19:53:51 2017
@@ -93,7 +93,6 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <version>2.19.1</version>
<configuration>
<trimStackTrace>false</trimStackTrace>
</configuration>
Re: svn commit: r1811764 - in /openwebbeans/meecrowave/trunk: ./
meecrowave-junit/src/main/java/org/apache/meecrowave/junit/
meecrowave-junit/src/main/java/org/apache/meecrowave/testing/
meecrowave-junit/src/test/java/org/apache/meecrowave/junit/ meecrowav...
Posted by Romain Manni-Bucau <rm...@gmail.com>.
fixed it, can you have a look please?
Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> | Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau>
2017-10-11 0:14 GMT+02:00 Romain Manni-Bucau <rm...@gmail.com>:
> Hi
>
>
> Can we revert it and add a flag - false by default - or a scope rule - new
> ScopeRule(RequestScoped.class, ...) - to solve it.
>
> Implicit start hides issues in actual deployment if not controllable.
>
>
>
> ---------- Message transféré ----------
> De : <st...@apache.org>
> Date : 10 oct. 2017 20:53
> Objet : svn commit: r1811764 - in /openwebbeans/meecrowave/trunk: ./
> meecrowave-junit/src/main/java/org/apache/meecrowave/junit/
> meecrowave-junit/src/main/java/org/apache/meecrowave/testing/
> meecrowave-junit/src/test/java/org/apache/meecrowave/junit/ meecrowav...
> À : <co...@openwebbeans.apache.org>
> Cc :
>
> Author: struberg
> Date: Tue Oct 10 19:53:51 2017
> New Revision: 1811764
>
> URL: http://svn.apache.org/viewvc?rev=1811764&view=rev
> Log:
> MEECROWAVE-71 setup RequestContext and SessionContext for each test
>
> Added:
> openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java
> (with props)
> openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java
> (with props)
> openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/resources/
> openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/reso
> urces/META-INF/
> openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/resources/META-INF/beans.xml
> (with props)
> Modified:
> openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java
> /org/apache/meecrowave/junit/MonoMeecrowave.java
> openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java
> /org/apache/meecrowave/testing/MonoBase.java
> openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java
> /org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java
> openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/ma
> in/resources/bin/meecrowave.sh
> openwebbeans/meecrowave/trunk/pom.xml
>
> Modified: openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java
> /org/apache/meecrowave/junit/MonoMeecrowave.java
> URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/m
> eecrowave-junit/src/main/java/org/apache/meecrowave/junit/
> MonoMeecrowave.java?rev=1811764&r1=1811763&r2=1811764&view=diff
> ============================================================
> ==================
> --- openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java
> /org/apache/meecrowave/junit/MonoMeecrowave.java (original)
> +++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java
> /org/apache/meecrowave/junit/MonoMeecrowave.java Tue Oct 10 19:53:51 2017
> @@ -21,15 +21,24 @@ package org.apache.meecrowave.junit;
> import org.apache.meecrowave.Meecrowave;
> import org.apache.meecrowave.testing.Injector;
> import org.apache.meecrowave.testing.MonoBase;
> +import org.apache.webbeans.config.WebBeansContext;
> +import org.apache.webbeans.spi.ContextsService;
> import org.junit.rules.MethodRule;
> import org.junit.runners.BlockJUnit4ClassRunner;
> import org.junit.runners.model.InitializationError;
> import org.junit.runners.model.Statement;
>
> +import javax.enterprise.context.RequestScoped;
> +import javax.enterprise.context.SessionScoped;
> import javax.enterprise.context.spi.CreationalContext;
> import java.util.List;
>
> -// a MeecrowaveRule starting a single container, very awesome for
> forkCount=1, reuseForks=true
> +/**
> + * A MeecrowaveRule starting a single container.
> + * Very awesome for forkCount=1, reuseForks=true
> + *
> + */
> +
> public class MonoMeecrowave {
> private static final MonoBase BASE = new MonoBase();
> private static final AutoCloseable NOOP_CLOSEABLE = () -> {
> @@ -47,12 +56,18 @@ public class MonoMeecrowave {
> @Override
> public void evaluate() throws Throwable {
> BASE.startIfNeeded();
> + ContextsService contextsService =
> WebBeansContext.currentInstance().getContextsService();
> +
> configInjection(test.getClass(), test);
> final CreationalContext<?> creationalContext =
> Injector.inject(test);
> try {
> + contextsService.startContext(RequestScoped.class,
> null);
> + contextsService.startContext(SessionScoped.class,
> null);
> base.evaluate();
> } finally {
> creationalContext.release();
> + contextsService.endContext(SessionScoped.class,
> null);
> + contextsService.endContext(RequestScoped.class,
> null);
> }
> }
>
>
> Modified: openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java
> /org/apache/meecrowave/testing/MonoBase.java
> URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/m
> eecrowave-junit/src/main/java/org/apache/meecrowave/testing/
> MonoBase.java?rev=1811764&r1=1811763&r2=1811764&view=diff
> ============================================================
> ==================
> --- openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java
> /org/apache/meecrowave/testing/MonoBase.java (original)
> +++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/java
> /org/apache/meecrowave/testing/MonoBase.java Tue Oct 10 19:53:51 2017
> @@ -27,7 +27,7 @@ import java.util.concurrent.atomic.Atomi
> import java.util.stream.StreamSupport;
>
> public class MonoBase {
> - private static final AtomicReference<AutoCloseable> CONTAINER = new
> AtomicReference<>();
> + private static final AtomicReference<Meecrowave> CONTAINER = new
> AtomicReference<>();
> private static final AtomicReference<Meecrowave.Builder>
> CONFIGURATION = new AtomicReference<>();
>
> public Meecrowave.Builder doBoot() {
> @@ -90,6 +90,8 @@ public class MonoBase {
> return getConfiguration();
> }
>
> +
> +
> public interface Configuration {
> default int order() {
> return 0;
>
> Modified: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java
> /org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java
> URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/m
> eecrowave-junit/src/test/java/org/apache/meecrowave/junit/
> MonoMeecrowaveRuleTest.java?rev=1811764&r1=1811763&r2=1811764&view=diff
> ============================================================
> ==================
> --- openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java
> /org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java (original)
> +++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java
> /org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java Tue Oct 10
> 19:53:51 2017
> @@ -21,9 +21,12 @@ package org.apache.meecrowave.junit;
> import org.apache.meecrowave.Meecrowave;
> import org.apache.meecrowave.io.IO;
> import org.apache.meecrowave.testing.ConfigurationInject;
> +import org.app.MyAppClass;
> +import org.app.MyReqClass;
> import org.junit.Test;
> import org.junit.runner.RunWith;
>
> +import javax.inject.Inject;
> import java.io.IOException;
> import java.io.InputStream;
> import java.net.URL;
> @@ -38,14 +41,43 @@ public class MonoMeecrowaveRuleTest {
> public static final MonoMeecrowave.Rule RULE = new
> MonoMeecrowave.Rule();
> */
>
> + private static int count = 0;
> +
> @ConfigurationInject
> private Meecrowave.Builder config;
>
> + private @Inject MyAppClass appClass;
> + private @Inject MyReqClass reqClass;
> +
> +
> @Test
> public void test() throws IOException {
> assertEquals("simple", slurp(new URL("http://localhost:" +
> config.getHttpPort() + "/api/test")));
> +
> + testScopes();
> + }
> +
> + @Test
> + public void anotherTest() throws IOException {
> + assertEquals("simple", slurp(new URL("http://localhost:" +
> config.getHttpPort() + "/api/test")));
> +
> + testScopes();
> + }
> +
> + private void testScopes() {
> + count++;
> +
> + if (count == 2) {
> + assertEquals("beenhere", appClass.getX());
> + assertEquals("init", reqClass.getX());
> + }
> + else {
> + reqClass.setX("beenhere");
> + appClass.setX("beenhere");
> + }
> }
>
> +
> private String slurp(final URL url) {
> try (final InputStream is = url.openStream()) {
> return IO.toString(is);
> @@ -54,4 +86,5 @@ public class MonoMeecrowaveRuleTest {
> }
> return null;
> }
> +
> }
>
> Added: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java
> /org/app/MyAppClass.java
> URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/m
> eecrowave-junit/src/test/java/org/app/MyAppClass.java?rev=
> 1811764&view=auto
> ============================================================
> ==================
> --- openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java
> (added)
> +++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java
> Tue Oct 10 19:53:51 2017
> @@ -0,0 +1,35 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements. See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You 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.app;
> +
> +import javax.enterprise.context.ApplicationScoped;
> +
> +/**
> + * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
> + */
> +@ApplicationScoped
> +public class MyAppClass {
> + private String x = "init";
> +
> + public String getX() {
> + return x;
> + }
> +
> + public void setX(String x) {
> + this.x = x;
> + }
> +}
>
> Propchange: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java
> /org/app/MyAppClass.java
> ------------------------------------------------------------
> ------------------
> svn:eol-style = native
>
> Added: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java
> /org/app/MyReqClass.java
> URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/m
> eecrowave-junit/src/test/java/org/app/MyReqClass.java?rev=
> 1811764&view=auto
> ============================================================
> ==================
> --- openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java
> (added)
> +++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java
> Tue Oct 10 19:53:51 2017
> @@ -0,0 +1,35 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements. See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You 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.app;
> +
> +import javax.enterprise.context.RequestScoped;
> +
> +/**
> + * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
> + */
> +@RequestScoped
> +public class MyReqClass {
> + private String x = "init";
> +
> + public String getX() {
> + return x;
> + }
> +
> + public void setX(String x) {
> + this.x = x;
> + }
> +}
>
> Propchange: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java
> /org/app/MyReqClass.java
> ------------------------------------------------------------
> ------------------
> svn:eol-style = native
>
> Added: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/reso
> urces/META-INF/beans.xml
> URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/m
> eecrowave-junit/src/test/resources/META-INF/beans.xml?rev=
> 1811764&view=auto
> ============================================================
> ==================
> (empty)
>
> Propchange: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/reso
> urces/META-INF/beans.xml
> ------------------------------------------------------------
> ------------------
> svn:eol-style = native
>
> Modified: openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/ma
> in/resources/bin/meecrowave.sh
> URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/m
> eecrowave-maven-plugin/src/main/resources/bin/meecrowave.sh?
> rev=1811764&r1=1811763&r2=1811764&view=diff
> ============================================================
> ==================
> --- openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/resources/bin/meecrowave.sh
> (original)
> +++ openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/resources/bin/meecrowave.sh
> Tue Oct 10 19:53:51 2017
> @@ -209,6 +209,7 @@ if $cygwin; then
> MEECROWAVE_BASE=`cygpath --absolute --windows "$MEECROWAVE_BASE"`
> MEECROWAVE_TMPDIR=`cygpath --absolute --windows "$MEECROWAVE_TMPDIR"`
> CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
> + JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
> fi
>
> if [ -z "$JSSE_OPTS" ] ; then
>
> Modified: openwebbeans/meecrowave/trunk/pom.xml
> URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/p
> om.xml?rev=1811764&r1=1811763&r2=1811764&view=diff
> ============================================================
> ==================
> --- openwebbeans/meecrowave/trunk/pom.xml (original)
> +++ openwebbeans/meecrowave/trunk/pom.xml Tue Oct 10 19:53:51 2017
> @@ -93,7 +93,6 @@
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-surefire-plugin</artifactId>
> - <version>2.19.1</version>
> <configuration>
> <trimStackTrace>false</trimStackTrace>
> </configuration>
>
>
>
>
Fwd: svn commit: r1811764 - in /openwebbeans/meecrowave/trunk: ./
meecrowave-junit/src/main/java/org/apache/meecrowave/junit/
meecrowave-junit/src/main/java/org/apache/meecrowave/testing/
meecrowave-junit/src/test/java/org/apache/meecrowave/junit/ meecrowav...
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi
Can we revert it and add a flag - false by default - or a scope rule - new
ScopeRule(RequestScoped.class, ...) - to solve it.
Implicit start hides issues in actual deployment if not controllable.
---------- Message transféré ----------
De : <st...@apache.org>
Date : 10 oct. 2017 20:53
Objet : svn commit: r1811764 - in /openwebbeans/meecrowave/trunk: ./
meecrowave-junit/src/main/java/org/apache/meecrowave/junit/
meecrowave-junit/src/main/java/org/apache/meecrowave/testing/
meecrowave-junit/src/test/java/org/apache/meecrowave/junit/ meecrowav...
À : <co...@openwebbeans.apache.org>
Cc :
Author: struberg
Date: Tue Oct 10 19:53:51 2017
New Revision: 1811764
URL: http://svn.apache.org/viewvc?rev=1811764&view=rev
Log:
MEECROWAVE-71 setup RequestContext and SessionContext for each test
Added:
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java
(with props)
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java
(with props)
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/resources/
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
resources/META-INF/
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/resources/META-INF/beans.xml
(with props)
Modified:
openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/
java/org/apache/meecrowave/junit/MonoMeecrowave.java
openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/
java/org/apache/meecrowave/testing/MonoBase.java
openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
java/org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/
main/resources/bin/meecrowave.sh
openwebbeans/meecrowave/trunk/pom.xml
Modified: openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/
java/org/apache/meecrowave/junit/MonoMeecrowave.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/
meecrowave-junit/src/main/java/org/apache/meecrowave/
junit/MonoMeecrowave.java?rev=1811764&r1=1811763&r2=1811764&view=diff
============================================================
==================
--- openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/
java/org/apache/meecrowave/junit/MonoMeecrowave.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/
java/org/apache/meecrowave/junit/MonoMeecrowave.java Tue Oct 10 19:53:51
2017
@@ -21,15 +21,24 @@ package org.apache.meecrowave.junit;
import org.apache.meecrowave.Meecrowave;
import org.apache.meecrowave.testing.Injector;
import org.apache.meecrowave.testing.MonoBase;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.spi.ContextsService;
import org.junit.rules.MethodRule;
import org.junit.runners.BlockJUnit4ClassRunner;
import org.junit.runners.model.InitializationError;
import org.junit.runners.model.Statement;
+import javax.enterprise.context.RequestScoped;
+import javax.enterprise.context.SessionScoped;
import javax.enterprise.context.spi.CreationalContext;
import java.util.List;
-// a MeecrowaveRule starting a single container, very awesome for
forkCount=1, reuseForks=true
+/**
+ * A MeecrowaveRule starting a single container.
+ * Very awesome for forkCount=1, reuseForks=true
+ *
+ */
+
public class MonoMeecrowave {
private static final MonoBase BASE = new MonoBase();
private static final AutoCloseable NOOP_CLOSEABLE = () -> {
@@ -47,12 +56,18 @@ public class MonoMeecrowave {
@Override
public void evaluate() throws Throwable {
BASE.startIfNeeded();
+ ContextsService contextsService = WebBeansContext.
currentInstance().getContextsService();
+
configInjection(test.getClass(), test);
final CreationalContext<?> creationalContext =
Injector.inject(test);
try {
+ contextsService.startContext(RequestScoped.class,
null);
+ contextsService.startContext(SessionScoped.class,
null);
base.evaluate();
} finally {
creationalContext.release();
+ contextsService.endContext(SessionScoped.class,
null);
+ contextsService.endContext(RequestScoped.class,
null);
}
}
Modified: openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/
java/org/apache/meecrowave/testing/MonoBase.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/
meecrowave-junit/src/main/java/org/apache/meecrowave/
testing/MonoBase.java?rev=1811764&r1=1811763&r2=1811764&view=diff
============================================================
==================
--- openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/
java/org/apache/meecrowave/testing/MonoBase.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/main/
java/org/apache/meecrowave/testing/MonoBase.java Tue Oct 10 19:53:51 2017
@@ -27,7 +27,7 @@ import java.util.concurrent.atomic.Atomi
import java.util.stream.StreamSupport;
public class MonoBase {
- private static final AtomicReference<AutoCloseable> CONTAINER = new
AtomicReference<>();
+ private static final AtomicReference<Meecrowave> CONTAINER = new
AtomicReference<>();
private static final AtomicReference<Meecrowave.Builder> CONFIGURATION
= new AtomicReference<>();
public Meecrowave.Builder doBoot() {
@@ -90,6 +90,8 @@ public class MonoBase {
return getConfiguration();
}
+
+
public interface Configuration {
default int order() {
return 0;
Modified: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
java/org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/
meecrowave-junit/src/test/java/org/apache/meecrowave/
junit/MonoMeecrowaveRuleTest.java?rev=1811764&r1=1811763&
r2=1811764&view=diff
============================================================
==================
--- openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
java/org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
java/org/apache/meecrowave/junit/MonoMeecrowaveRuleTest.java Tue Oct 10
19:53:51 2017
@@ -21,9 +21,12 @@ package org.apache.meecrowave.junit;
import org.apache.meecrowave.Meecrowave;
import org.apache.meecrowave.io.IO;
import org.apache.meecrowave.testing.ConfigurationInject;
+import org.app.MyAppClass;
+import org.app.MyReqClass;
import org.junit.Test;
import org.junit.runner.RunWith;
+import javax.inject.Inject;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
@@ -38,14 +41,43 @@ public class MonoMeecrowaveRuleTest {
public static final MonoMeecrowave.Rule RULE = new
MonoMeecrowave.Rule();
*/
+ private static int count = 0;
+
@ConfigurationInject
private Meecrowave.Builder config;
+ private @Inject MyAppClass appClass;
+ private @Inject MyReqClass reqClass;
+
+
@Test
public void test() throws IOException {
assertEquals("simple", slurp(new URL("http://localhost:" +
config.getHttpPort() + "/api/test")));
+
+ testScopes();
+ }
+
+ @Test
+ public void anotherTest() throws IOException {
+ assertEquals("simple", slurp(new URL("http://localhost:" +
config.getHttpPort() + "/api/test")));
+
+ testScopes();
+ }
+
+ private void testScopes() {
+ count++;
+
+ if (count == 2) {
+ assertEquals("beenhere", appClass.getX());
+ assertEquals("init", reqClass.getX());
+ }
+ else {
+ reqClass.setX("beenhere");
+ appClass.setX("beenhere");
+ }
}
+
private String slurp(final URL url) {
try (final InputStream is = url.openStream()) {
return IO.toString(is);
@@ -54,4 +86,5 @@ public class MonoMeecrowaveRuleTest {
}
return null;
}
+
}
Added: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
java/org/app/MyAppClass.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/
meecrowave-junit/src/test/java/org/app/MyAppClass.java?rev=1811764&view=auto
============================================================
==================
--- openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java
(added)
+++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyAppClass.java
Tue Oct 10 19:53:51 2017
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.app;
+
+import javax.enterprise.context.ApplicationScoped;
+
+/**
+ * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
+ */
+@ApplicationScoped
+public class MyAppClass {
+ private String x = "init";
+
+ public String getX() {
+ return x;
+ }
+
+ public void setX(String x) {
+ this.x = x;
+ }
+}
Propchange: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
java/org/app/MyAppClass.java
------------------------------------------------------------
------------------
svn:eol-style = native
Added: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
java/org/app/MyReqClass.java
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/
meecrowave-junit/src/test/java/org/app/MyReqClass.java?rev=1811764&view=auto
============================================================
==================
--- openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java
(added)
+++ openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/java/org/app/MyReqClass.java
Tue Oct 10 19:53:51 2017
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.app;
+
+import javax.enterprise.context.RequestScoped;
+
+/**
+ * @author <a href="mailto:struberg@yahoo.de">Mark Struberg</a>
+ */
+@RequestScoped
+public class MyReqClass {
+ private String x = "init";
+
+ public String getX() {
+ return x;
+ }
+
+ public void setX(String x) {
+ this.x = x;
+ }
+}
Propchange: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
java/org/app/MyReqClass.java
------------------------------------------------------------
------------------
svn:eol-style = native
Added: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
resources/META-INF/beans.xml
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/
meecrowave-junit/src/test/resources/META-INF/beans.xml?rev=1811764&view=auto
============================================================
==================
(empty)
Propchange: openwebbeans/meecrowave/trunk/meecrowave-junit/src/test/
resources/META-INF/beans.xml
------------------------------------------------------------
------------------
svn:eol-style = native
Modified: openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/
main/resources/bin/meecrowave.sh
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/
meecrowave-maven-plugin/src/main/resources/bin/meecrowave.
sh?rev=1811764&r1=1811763&r2=1811764&view=diff
============================================================
==================
--- openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/
main/resources/bin/meecrowave.sh (original)
+++ openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/
main/resources/bin/meecrowave.sh Tue Oct 10 19:53:51 2017
@@ -209,6 +209,7 @@ if $cygwin; then
MEECROWAVE_BASE=`cygpath --absolute --windows "$MEECROWAVE_BASE"`
MEECROWAVE_TMPDIR=`cygpath --absolute --windows "$MEECROWAVE_TMPDIR"`
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+ JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
fi
if [ -z "$JSSE_OPTS" ] ; then
Modified: openwebbeans/meecrowave/trunk/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/
pom.xml?rev=1811764&r1=1811763&r2=1811764&view=diff
============================================================
==================
--- openwebbeans/meecrowave/trunk/pom.xml (original)
+++ openwebbeans/meecrowave/trunk/pom.xml Tue Oct 10 19:53:51 2017
@@ -93,7 +93,6 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <version>2.19.1</version>
<configuration>
<trimStackTrace>false</trimStackTrace>
</configuration>