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) {


Reply via email to