You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/10/29 15:02:42 UTC

git commit: TOMEE-1434 TOMEE-1430 support for roles/users in tomee embedded

Repository: tomee
Updated Branches:
  refs/heads/tomee-1.7.x fe9d200af -> 9189aaea5


TOMEE-1434 TOMEE-1430 support for roles/users in tomee embedded


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/9189aaea
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/9189aaea
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/9189aaea

Branch: refs/heads/tomee-1.7.x
Commit: 9189aaea5dd24bd52f64cf2abfbd867e7a7c54da
Parents: fe9d200
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Oct 29 15:02:28 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Wed Oct 29 15:02:36 2014 +0100

----------------------------------------------------------------------
 .../embedded/EmbeddedTomEEConfiguration.java    | 39 +++++++++++++++++++-
 .../embedded/EmbeddedTomEEContainer.java        |  8 ++++
 .../apache/tomee/embedded/Configuration.java    | 20 ++++++++++
 .../org/apache/tomee/embedded/Container.java    | 13 +++++++
 4 files changed, 79 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/9189aaea/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEConfiguration.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEConfiguration.java b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEConfiguration.java
index af2177c..1e3deb4 100644
--- a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEConfiguration.java
+++ b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEConfiguration.java
@@ -20,6 +20,7 @@ import org.apache.openejb.OpenEJBRuntimeException;
 import org.apache.openejb.arquillian.common.IO;
 import org.apache.openejb.arquillian.common.Prefixes;
 import org.apache.openejb.arquillian.common.TomEEConfiguration;
+import org.jboss.arquillian.config.descriptor.api.Multiline;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -40,6 +41,8 @@ public class EmbeddedTomEEConfiguration extends TomEEConfiguration {
     private String clientAuth;
     private String keyAlias;
     private String sslProtocol;
+    private String users;
+    private String roles;
 
     public int getHttpsPort() {
         return httpsPort;
@@ -105,6 +108,32 @@ public class EmbeddedTomEEConfiguration extends TomEEConfiguration {
         this.sslProtocol = sslProtocol;
     }
 
+    public String getUsers() {
+        return users;
+    }
+
+    public Properties getUsersAsProperties() {
+        return toProperties(users);
+    }
+
+    @Multiline
+    public void setUsers(final String users) {
+        this.users = users;
+    }
+
+    public String getRoles() {
+        return roles;
+    }
+
+    public Properties getRolesAsProperties() {
+        return toProperties(roles);
+    }
+
+    @Multiline
+    public void setRoles(final String roles) {
+        this.roles = roles;
+    }
+
     @Override
     public int[] portsAlreadySet() {
         final List<Integer> value = new ArrayList<Integer>();
@@ -125,8 +154,16 @@ public class EmbeddedTomEEConfiguration extends TomEEConfiguration {
             return new Properties();
         }
 
+        return toProperties(properties);
+    }
+
+    private static Properties toProperties(final String value) {
+        if (value == null || value.isEmpty()) {
+            return null;
+        }
+
         final Properties properties = new Properties();
-        final ByteArrayInputStream bais = new ByteArrayInputStream(getProperties().getBytes());
+        final ByteArrayInputStream bais = new ByteArrayInputStream(value.getBytes());
         try {
             properties.load(bais);
         } catch (final IOException e) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/9189aaea/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
index 613d2d9..e6f4d6a 100644
--- a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
+++ b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
@@ -44,6 +44,7 @@ import javax.enterprise.context.RequestScoped;
 import javax.enterprise.context.SessionScoped;
 import javax.servlet.http.HttpSession;
 import java.io.File;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -96,6 +97,13 @@ public class EmbeddedTomEEContainer extends TomEEContainer<EmbeddedTomEEConfigur
         configuration.setKeyAlias(tomeeConfiguration.getKeyAlias());
         configuration.setSslProtocol(tomeeConfiguration.getSslProtocol());
 
+        if (tomeeConfiguration.getRoles() != null) {
+            configuration.setRoles(new HashMap<String, String>(Map.class.cast(tomeeConfiguration.getRolesAsProperties())));
+        }
+        if (tomeeConfiguration.getUsers() != null) {
+            configuration.setUsers(new HashMap<String, String>(Map.class.cast(tomeeConfiguration.getUsersAsProperties())));
+        }
+
         return configuration;
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/9189aaea/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
index e705a38..702ef8a 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
@@ -19,6 +19,7 @@ package org.apache.tomee.embedded;
 import org.apache.openejb.util.NetworkUtil;
 
 import java.io.File;
+import java.util.Map;
 import java.util.Properties;
 
 /**
@@ -44,6 +45,9 @@ public class Configuration {
     private String keyAlias;
     private String sslProtocol;
 
+    private Map<String, String> users;
+    private Map<String, String> roles;
+
     public int getHttpPort() {
         return httpPort;
     }
@@ -195,4 +199,20 @@ public class Configuration {
         properties.setProperty(key, value);
         return this;
     }
+
+    public Map<String, String> getUsers() {
+        return users;
+    }
+
+    public void setUsers(final Map<String, String> users) { // useful for tools like maven plugin
+        this.users = users;
+    }
+
+    public Map<String, String> getRoles() {
+        return roles;
+    }
+
+    public void setRoles(final Map<String, String> roles) {
+        this.roles = roles;
+    }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/9189aaea/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
index 4b00885..147d002 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
@@ -241,6 +241,19 @@ public class Container implements Closeable {
         // Bootstrap Tomcat
         Logger.getInstance(LogCategory.OPENEJB_STARTUP, Container.class).info("Starting TomEE from: " + base.getAbsolutePath()); // create it after Logger is configured
 
+        if (configuration.getUsers() != null) {
+            for (final Map.Entry<String, String> user : configuration.getUsers().entrySet()) {
+                tomcat.addUser(user.getKey(), user.getValue());
+            }
+        }
+        if (configuration.getRoles() != null) {
+            for (final Map.Entry<String, String> user : configuration.getRoles().entrySet()) {
+                for (final String role : user.getValue().split(" *, *")) {
+                    tomcat.addRole(user.getKey(), role);
+                }
+            }
+        }
+
         final String catalinaBase = base.getAbsolutePath();
         System.setProperty("openejb.deployments.classpath", "false");
         System.setProperty("catalina.home", catalinaBase);