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]);
+ }
+}