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 2016/09/29 16:01:45 UTC

tomee git commit: ensuring our tomee embedded builder are compatible with xbean

Repository: tomee
Updated Branches:
  refs/heads/master 2c2c31798 -> 72fd11890


ensuring our tomee embedded builder are compatible with xbean


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

Branch: refs/heads/master
Commit: 72fd118901e9fb03743c732b7d0c631f53378698
Parents: 2c2c317
Author: rmannibucau <rm...@apache.org>
Authored: Thu Sep 29 18:01:36 2016 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Thu Sep 29 18:01:36 2016 +0200

----------------------------------------------------------------------
 .../apache/tomee/embedded/Configuration.java    |   8 +-
 .../tomee/embedded/LoginConfigBuilder.java      |  32 ++++--
 .../java/org/apache/tomee/embedded/Main.java    |   6 +-
 .../embedded/SecurityConstaintBuilder.java      |  47 +++++++--
 .../tomee/embedded/ConfigurationTest.java       | 100 +++++++++++++++++++
 5 files changed, 167 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/72fd1189/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 c005121..9c463eb 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
@@ -226,8 +226,8 @@ public class Configuration {
             } else if (prop.equals("securityConstraint")) {
                 final ObjectRecipe recipe = new ObjectRecipe(SecurityConstaintBuilder.class.getName());
                 for (final String nestedConfig : config.stringPropertyNames()) {
-                    if (nestedConfig.startsWith("securityConstraints.")) {
-                        recipe.setProperty(nestedConfig.substring("securityConstraints.".length()), config.getProperty(nestedConfig));
+                    if (nestedConfig.startsWith("securityConstraint.")) {
+                        recipe.setProperty(nestedConfig.substring("securityConstraint.".length()), config.getProperty(nestedConfig));
                     }
                 }
                 securityConstaint(SecurityConstaintBuilder.class.cast(recipe.create()));
@@ -236,9 +236,9 @@ public class Configuration {
                 if (next.contains(".")) {
                     continue;
                 }
-                final ObjectRecipe recipe = new ObjectRecipe(SecurityConstaintBuilder.class.getName());
+                final ObjectRecipe recipe = new ObjectRecipe(properties.getProperty(prop + ".class"));
                 for (final String nestedConfig : config.stringPropertyNames()) {
-                    if (nestedConfig.startsWith(prop)) {
+                    if (nestedConfig.startsWith(prop) && !prop.endsWith(".class")) {
                         recipe.setProperty(nestedConfig.substring(prop.length() + 1 /*dot*/), config.getProperty(nestedConfig));
                     }
                 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/72fd1189/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/LoginConfigBuilder.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/LoginConfigBuilder.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/LoginConfigBuilder.java
index 6b68bd2..08748af 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/LoginConfigBuilder.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/LoginConfigBuilder.java
@@ -23,22 +23,38 @@ import org.apache.tomcat.util.descriptor.web.LoginConfig;
 public class LoginConfigBuilder {
     private final LoginConfig loginConfig = new LoginConfig();
 
-    public LoginConfigBuilder setErrorPage(final String errorPage) {
+    public void setErrorPage(final String errorPage) {
+        loginConfig.setErrorPage(errorPage);
+    }
+
+    public void setLoginPage(final String loginPage) {
+        loginConfig.setLoginPage(loginPage);
+    }
+
+    public void setRealmName(final String realmName) {
+        loginConfig.setRealmName(realmName);
+    }
+
+    public void setAuthMethod(final String authMethod) {
+        loginConfig.setAuthMethod(authMethod);
+    }
+
+    public LoginConfigBuilder errorPage(final String errorPage) {
         loginConfig.setErrorPage(errorPage);
         return this;
     }
 
-    public LoginConfigBuilder setLoginPage(final String loginPage) {
+    public LoginConfigBuilder loginPage(final String loginPage) {
         loginConfig.setLoginPage(loginPage);
         return this;
     }
 
-    public LoginConfigBuilder setRealmName(final String realmName) {
+    public LoginConfigBuilder realmName(final String realmName) {
         loginConfig.setRealmName(realmName);
         return this;
     }
 
-    public LoginConfigBuilder setAuthMethod(final String authMethod) {
+    public LoginConfigBuilder authMethod(final String authMethod) {
         loginConfig.setAuthMethod(authMethod);
         return this;
     }
@@ -48,18 +64,18 @@ public class LoginConfigBuilder {
     }
 
     public LoginConfigBuilder basic() {
-        return setAuthMethod("BASIC");
+        return authMethod("BASIC");
     }
 
     public LoginConfigBuilder digest() {
-        return setAuthMethod("DIGEST");
+        return authMethod("DIGEST");
     }
 
     public LoginConfigBuilder clientCert() {
-        return setAuthMethod("CLIENT-CERT");
+        return authMethod("CLIENT-CERT");
     }
 
     public LoginConfigBuilder form() {
-        return setAuthMethod("FORM");
+        return authMethod("FORM");
     }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/72fd1189/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
index 0cc7589..ab48183 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
@@ -334,17 +334,17 @@ public class Main {
 
                 }
             };
-            realm.setAppName("eyes-of-the-tiger");
+            realm.setAppName("application");
             realm.setConfigFile(new File(jaas).getAbsolutePath());
             config.setRealm(realm);
         }
         if (args.hasOption(BASIC)) {
             config.loginConfig(new LoginConfigBuilder().basic()
-                    .setRealmName(System.getProperty("tomee.embedded.main.basic.realm", "Security")));
+                    .realmName(System.getProperty("tomee.embedded.main.basic.realm", "Security")));
             config.securityConstaint(new SecurityConstaintBuilder().authConstraint(true)
                     .addAuthRole(System.getProperty("tomee.embedded.main.basic.role", "*"))
                     .addCollection("Basic", System.getProperty("tomee.embedded.main.basic.pattern", "/*"))
-                    .setDisplayName(System.getProperty("tomee.embedded.main.basic.display-name", "Basic security")));
+                    .displayName(System.getProperty("tomee.embedded.main.basic.display-name", "Basic security")));
         }
         if (args.hasOption(CACHE_WEB_RESOURCES)) {
             config.setWebResourceCached(Boolean.parseBoolean(args.getOptionValue(CACHE_WEB_RESOURCES)));

http://git-wip-us.apache.org/repos/asf/tomee/blob/72fd1189/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/SecurityConstaintBuilder.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/SecurityConstaintBuilder.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/SecurityConstaintBuilder.java
index 84151b4..9b8909e 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/SecurityConstaintBuilder.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/SecurityConstaintBuilder.java
@@ -5,14 +5,14 @@
  * 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.
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tomee.embedded;
 
@@ -27,13 +27,13 @@ public class SecurityConstaintBuilder {
         return this;
     }
 
-    public SecurityConstaintBuilder setDisplayName(final String displayName) {
+    public SecurityConstaintBuilder displayName(final String displayName) {
         securityConstraint.setDisplayName(displayName);
         return this;
     }
 
-    public SecurityConstaintBuilder setUserConstraint(final String userConstraint) {
-        securityConstraint.setUserConstraint(userConstraint);
+    public SecurityConstaintBuilder userConstraint(final String constraint) {
+        securityConstraint.setUserConstraint(constraint);
         return this;
     }
 
@@ -53,6 +53,31 @@ public class SecurityConstaintBuilder {
         return this;
     }
 
+    public void setAuthConstraint(final boolean authConstraint) {
+        securityConstraint.setAuthConstraint(authConstraint);
+    }
+
+    public void setDisplayName(final String displayName) {
+        securityConstraint.setDisplayName(displayName);
+    }
+
+    public void setUserConstraint(final String userConstraint) {
+        securityConstraint.setUserConstraint(userConstraint);
+    }
+
+    public void setAuthRole(final String authRole) { // easier for config
+        addAuthRole(authRole);
+    }
+
+    // name:pattern:method1/method2
+    public void setCollection(final String value) { // for config
+        final String[] split = value.split(":");
+        if (split.length != 3 && split.length != 2) {
+            throw new IllegalArgumentException("Can't parse " + value + ", syntax is: name:pattern:method1/method2");
+        }
+        addCollection(split[0], split[1], split.length == 2 ? new String[0] : split[2].split("/"));
+    }
+
     public SecurityConstraint build() {
         return securityConstraint;
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/72fd1189/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfigurationTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfigurationTest.java b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfigurationTest.java
new file mode 100644
index 0000000..b072491
--- /dev/null
+++ b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfigurationTest.java
@@ -0,0 +1,100 @@
+/**
+ * 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
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tomee.embedded;
+
+import org.apache.catalina.realm.JAASRealm;
+import org.apache.openejb.testng.PropertiesBuilder;
+import org.apache.tomcat.util.descriptor.web.LoginConfig;
+import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
+import org.junit.Test;
+
+import java.util.Collection;
+import java.util.HashMap;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+public class ConfigurationTest {
+    @Test
+    public void autoConfig() {
+        final Configuration configuration = new Configuration();
+        configuration.loadFromProperties(new PropertiesBuilder()
+                // plain params
+                .p("http", "1234")
+                .p("stop", "1235")
+                .p("host", "here")
+                .p("dir", "target/dirtmp")
+                .p("quickSession", "false")
+                .p("webResourceCached", "false")
+                .p("withEjbRemote", "true")
+                .p("deployOpenEjbApp", "true")
+                .p("users.u1", "p1")
+                .p("users.u2", "p2")
+                .p("roles.admin", "u1,u2")
+                .p("roles.simple", "u1")
+                // more complex structures
+                .p("realm", "org.apache.catalina.realm.JAASRealm")
+                .p("realm.appName", "app")
+                .p("realm.configFile", "configuration.jaas")
+                // there we ensure our builders are xbean friendly
+                .p("login", "")
+                .p("login.realmName", "app")
+                .p("login.authMethod", "BASIC")
+                .p("login", "")
+                .p("securityConstraint", "")
+                .p("securityConstraint.authConstraint", "true")
+                .p("securityConstraint.authRole", "**")
+                .p("securityConstraint.collection", "api:/api/*")
+                .build());
+
+        assertEquals(1234, configuration.getHttpPort());
+        assertEquals(1235, configuration.getStopPort());
+        assertEquals("target/dirtmp", configuration.getDir());
+        assertFalse(configuration.isQuickSession());
+        assertTrue(configuration.isWithEjbRemote());
+        assertTrue(configuration.isDeployOpenEjbApp());
+        assertEquals(new HashMap<String, String>() {{
+            put("u1", "p1");
+            put("u2", "p2");
+        }}, configuration.getUsers());
+        assertEquals(new HashMap<String, String>() {{
+            put("admin", "u1,u2");
+            put("simple", "u1");
+        }}, configuration.getRoles());
+
+        assertNotNull(configuration.getRealm());
+        assertTrue(JAASRealm.class.isInstance(configuration.getRealm()));
+        final JAASRealm realm = JAASRealm.class.cast(configuration.getRealm());
+        assertEquals("app", realm.getAppName());
+        assertEquals("configuration.jaas", realm.getConfigFile());
+
+        assertNotNull(configuration.getLoginConfig());
+        final LoginConfig loginConfig = configuration.getLoginConfig().build();
+        assertEquals("app", loginConfig.getRealmName());
+        assertEquals("BASIC", loginConfig.getAuthMethod());
+
+        final Collection<SecurityConstaintBuilder> securityConstraints = configuration.getSecurityConstraints();
+        assertNotNull(securityConstraints);
+        assertEquals(1, securityConstraints.size());
+        final SecurityConstraint constraint = securityConstraints.iterator().next().build();
+        assertTrue(constraint.getAuthConstraint());
+        assertTrue(constraint.getAuthenticatedUsers());
+        assertEquals("/api/*", constraint.findCollection("api").findPatterns()[0]);
+    }
+}