Author: rmannibucau
Date: Fri Apr 27 09:33:03 2018
New Revision: 1830320
URL: http://svn.apache.org/viewvc?rev=1830320&view=rev
Log:
MEECROWAVE-114 adding cookie/session config in meecrowave config
Added:
openwebbeans/meecrowave/trunk/meecrowave-core/src/test/java/org/apache/meecrowave/CustomSessionConfigTest.java
Modified:
openwebbeans/meecrowave/trunk/meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/MeecrowaveConfiguration.java
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java
openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveExtension.java
openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveRunMojo.java
Modified:
openwebbeans/meecrowave/trunk/meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/MeecrowaveConfiguration.java
URL:
http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/MeecrowaveConfiguration.java?rev=1830320&r1=1830319&r2=1830320&view=diff
==============================================================================
---
openwebbeans/meecrowave/trunk/meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/MeecrowaveConfiguration.java
(original)
+++
openwebbeans/meecrowave/trunk/meecrowave-arquillian/src/main/java/org/apache/meecrowave/arquillian/MeecrowaveConfiguration.java
Fri Apr 27 09:33:03 2018
@@ -106,6 +106,8 @@ public class MeecrowaveConfiguration imp
private String meecrowaveProperties = "meecrowave.properties";
private boolean jaxwsSupportIfAvailable = true;
private String defaultSSLHostConfigName;
+ private Integer webSessionTimeout;
+ private String webSessionCookieConfig;
// configurable cause when set to Local arquillian bypass some protocol
configuration cause of container default
private String arquillianProtocol = "Servlet 3.1";
@@ -784,4 +786,20 @@ public class MeecrowaveConfiguration imp
public void setInitializeClientBus(final boolean initializeClientBus) {
this.initializeClientBus = initializeClientBus;
}
+
+ public Integer getWebSessionTimeout() {
+ return webSessionTimeout;
+ }
+
+ public void setWebSessionTimeout(final Integer webSessionTimeout) {
+ this.webSessionTimeout = webSessionTimeout;
+ }
+
+ public String getWebSessionCookieConfig() {
+ return webSessionCookieConfig;
+ }
+
+ public void setWebSessionCookieConfig(final String webSessionCookieConfig)
{
+ this.webSessionCookieConfig = webSessionCookieConfig;
+ }
}
Modified:
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java
URL:
http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java?rev=1830320&r1=1830319&r2=1830320&view=diff
==============================================================================
---
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java
(original)
+++
openwebbeans/meecrowave/trunk/meecrowave-core/src/main/java/org/apache/meecrowave/Meecrowave.java
Fri Apr 27 09:33:03 2018
@@ -33,6 +33,7 @@ import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.StringReader;
import java.io.Writer;
import java.lang.management.ManagementFactory;
import java.lang.reflect.Field;
@@ -72,6 +73,7 @@ import javax.enterprise.inject.spi.BeanM
import javax.enterprise.inject.spi.CDI;
import javax.enterprise.inject.spi.InjectionTarget;
import javax.servlet.ServletContainerInitializer;
+import javax.servlet.SessionCookieConfig;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
@@ -102,7 +104,6 @@ import org.apache.meecrowave.api.StartLi
import org.apache.meecrowave.api.StopListening;
import org.apache.meecrowave.cxf.ConfigurableBus;
import org.apache.meecrowave.cxf.CxfCdiAutoSetup;
-import org.apache.meecrowave.cxf.MeecrowaveClientLifecycleListener;
import org.apache.meecrowave.io.IO;
import org.apache.meecrowave.logging.jul.Log4j2Logger;
import org.apache.meecrowave.logging.log4j2.Log4j2Shutdown;
@@ -313,6 +314,35 @@ public class Meecrowave implements AutoC
ctx.addLifecycleListener(new MeecrowaveContextConfig(configuration,
meta.docBase != null, meecrowaveInitializer));
ctx.addLifecycleListener(event -> {
switch (event.getType()) {
+ case Lifecycle.BEFORE_START_EVENT:
+ if (configuration.getWebSessionCookieConfig() != null) {
+ final Properties p = new Properties();
+ try {
+ p.load(new
StringReader(configuration.getWebSessionCookieConfig()));
+ } catch (final IOException e) {
+ throw new IllegalArgumentException(e);
+ }
+ if (p.containsKey("domain")) {
+
ctx.setSessionCookieDomain(p.getProperty("domain"));
+ }
+ if (p.containsKey("path")) {
+ ctx.setSessionCookiePath(p.getProperty("path"));
+ }
+ if (p.containsKey("name")) {
+ ctx.setSessionCookieName(p.getProperty("name"));
+ }
+ if (p.containsKey("use-trailing-slash")) {
+
ctx.setSessionCookiePathUsesTrailingSlash(Boolean.parseBoolean(p.getProperty("use-trailing-slash")));
+ }
+ if (p.containsKey("http-only")) {
+
ctx.setUseHttpOnly(Boolean.parseBoolean(p.getProperty("http-only")));
+ }
+ if (p.containsKey("secured")) {
+ final SessionCookieConfig sessionCookieConfig =
ctx.getServletContext().getSessionCookieConfig();
+
sessionCookieConfig.setSecure(Boolean.parseBoolean(p.getProperty("secured")));
+ }
+ }
+ break;
case Lifecycle.AFTER_START_EVENT:
ctx.getResources().setCachingAllowed(configuration.webResourceCached);
break;
@@ -338,7 +368,7 @@ public class Meecrowave implements AutoC
ctx.addServletContainerInitializer(meecrowaveInitializer, emptySet());
if (configuration.isUseTomcatDefaults()) {
- ctx.setSessionTimeout(30);
+ ctx.setSessionTimeout(configuration.getWebSessionTimeout() != null
? configuration.getWebSessionTimeout() : 30);
ctx.addWelcomeFile("index.html");
ctx.addWelcomeFile("index.htm");
try {
@@ -353,6 +383,8 @@ public class Meecrowave implements AutoC
} catch (final NoSuchFieldException | IllegalAccessException e) {
throw new IllegalStateException("Incompatible Tomcat", e);
}
+ } else if (configuration.getWebSessionTimeout() != null) {
+ ctx.setSessionTimeout(configuration.getWebSessionTimeout());
}
ofNullable(meta.consumer).ifPresent(c -> c.accept(ctx));
@@ -1198,6 +1230,12 @@ public class Meecrowave implements AutoC
@CliOption(name = "scanning-package-exclude", description = "A forced
exclude list of packages names (comma separated values)")
private String scanningPackageExcludes;
+ @CliOption(name = "web-session-timeout", description = "Force the
session timeout for webapps")
+ private Integer webSessionTimeout;
+
+ @CliOption(name = "web-session-cookie-config", description = "Force
the cookie-config, it uses a properties syntax with the keys being the web.xml
tag names.")
+ private String webSessionCookieConfig;
+
@CliOption(name = "tomcat-default", description = "Should Tomcat
default be set (session timeout, mime mapping etc...)")
private boolean useTomcatDefaults = true;
@@ -1258,6 +1296,22 @@ public class Meecrowave implements AutoC
}));
}
+ public Integer getWebSessionTimeout() {
+ return webSessionTimeout;
+ }
+
+ public void setWebSessionTimeout(final Integer webSessionTimeout) {
+ this.webSessionTimeout = webSessionTimeout;
+ }
+
+ public String getWebSessionCookieConfig() {
+ return webSessionCookieConfig;
+ }
+
+ public void setWebSessionCookieConfig(final String
webSessionCookieConfig) {
+ this.webSessionCookieConfig = webSessionCookieConfig;
+ }
+
public boolean isInitializeClientBus() {
return initializeClientBus;
}
Added:
openwebbeans/meecrowave/trunk/meecrowave-core/src/test/java/org/apache/meecrowave/CustomSessionConfigTest.java
URL:
http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-core/src/test/java/org/apache/meecrowave/CustomSessionConfigTest.java?rev=1830320&view=auto
==============================================================================
---
openwebbeans/meecrowave/trunk/meecrowave-core/src/test/java/org/apache/meecrowave/CustomSessionConfigTest.java
(added)
+++
openwebbeans/meecrowave/trunk/meecrowave-core/src/test/java/org/apache/meecrowave/CustomSessionConfigTest.java
Fri Apr 27 09:33:03 2018
@@ -0,0 +1,43 @@
+/*
+ * 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.apache.meecrowave;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.apache.catalina.Context;
+import org.junit.Test;
+
+public class CustomSessionConfigTest {
+ @Test
+ public void test() {
+ try (final Meecrowave meecrowave = new Meecrowave(
+ new Meecrowave.Builder() {{
+ setSkipHttp(true);
+ setWebSessionTimeout(20);
+ setWebSessionCookieConfig("secured=true");
+
}}.includePackages(CustomSessionConfigTest.class.getName())).bake()) {
+ final Context context = Context.class.cast(meecrowave.getTomcat()
+ .getHost()
+ .findChildren()[0]);
+ assertEquals(20, context.getSessionTimeout());
+
assertTrue(context.getServletContext().getSessionCookieConfig().isSecure());
+ }
+ }
+}
Modified:
openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveExtension.java
URL:
http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveExtension.java?rev=1830320&r1=1830319&r2=1830320&view=diff
==============================================================================
---
openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveExtension.java
(original)
+++
openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveExtension.java
Fri Apr 27 09:33:03 2018
@@ -97,6 +97,24 @@ public class MeecrowaveExtension {
private String meecrowaveProperties = "meecrowave.properties";
private boolean jaxwsSupportIfAvailable = true;
private String defaultSSLHostConfigName;
+ private Integer webSessionTimeout;
+ private String webSessionCookieConfig;
+
+ public Integer getWebSessionTimeout() {
+ return webSessionTimeout;
+ }
+
+ public void setWebSessionTimeout(final Integer webSessionTimeout) {
+ this.webSessionTimeout = webSessionTimeout;
+ }
+
+ public String getWebSessionCookieConfig() {
+ return webSessionCookieConfig;
+ }
+
+ public void setWebSessionCookieConfig(final String webSessionCookieConfig)
{
+ this.webSessionCookieConfig = webSessionCookieConfig;
+ }
public boolean isJaxwsSupportIfAvailable() {
return jaxwsSupportIfAvailable;
Modified:
openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java
URL:
http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java?rev=1830320&r1=1830319&r2=1830320&view=diff
==============================================================================
---
openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java
(original)
+++
openwebbeans/meecrowave/trunk/meecrowave-gradle-plugin/src/main/java/org/apache/meecrowave/gradle/MeecrowaveTask.java
Fri Apr 27 09:33:03 2018
@@ -348,6 +348,14 @@ public class MeecrowaveTask extends Defa
@Optional
private String defaultSSLHostConfigName;
+ @Input
+ @Optional
+ private Integer webSessionTimeout;
+
+ @Input
+ @Optional
+ private String webSessionCookieConfig;
+
@TaskAction
public void bake() {
fixConfig();
@@ -1196,4 +1204,20 @@ public class MeecrowaveTask extends Defa
public void setInitializeClientBus(final boolean initializeClientBus) {
this.initializeClientBus = initializeClientBus;
}
+
+ public Integer getWebSessionTimeout() {
+ return webSessionTimeout;
+ }
+
+ public void setWebSessionTimeout(final Integer webSessionTimeout) {
+ this.webSessionTimeout = webSessionTimeout;
+ }
+
+ public String getWebSessionCookieConfig() {
+ return webSessionCookieConfig;
+ }
+
+ public void setWebSessionCookieConfig(final String webSessionCookieConfig)
{
+ this.webSessionCookieConfig = webSessionCookieConfig;
+ }
}
Modified:
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveRunMojo.java
URL:
http://svn.apache.org/viewvc/openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveRunMojo.java?rev=1830320&r1=1830319&r2=1830320&view=diff
==============================================================================
---
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveRunMojo.java
(original)
+++
openwebbeans/meecrowave/trunk/meecrowave-maven-plugin/src/main/java/org/apache/meecrowave/maven/MeecrowaveRunMojo.java
Fri Apr 27 09:33:03 2018
@@ -290,6 +290,12 @@ public class MeecrowaveRunMojo extends A
@Parameter(property = "meecrowave.default-ssl-hostconfig-name")
private String defaultSSLHostConfigName;
+ @Parameter(property = "meecrowave.session-timeout")
+ private Integer webSessionTimeout;
+
+ @Parameter(property = "meecrowave.session-cookie-config")
+ private String webSessionCookieConfig;
+
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
if (skip) {