blob: 5b4f1e352453c0dc9ee78559df46cc363f393935 [file] [log] [blame]
/*
* 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.openejb.arquillian.embedded;
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;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
* @version $Rev$ $Date$
*/
@Prefixes({"tomee", "tomee.embedded"})
public class EmbeddedTomEEConfiguration extends TomEEConfiguration {
private int httpsPort = 8443;
private boolean ssl;
private boolean withEjbRemote;
private String keystoreFile;
private String keystorePass;
private String keystoreType = "JKS";
private String clientAuth;
private String keyAlias;
private String sslProtocol;
private String users;
private String roles;
private boolean webResourcesCached = true;
private boolean http2;
private String configurationCustomizers;
private String classpathConfiguration;
public EmbeddedTomEEConfiguration() {
setArquillianProtocol("Local"); // keep this default cause it is way faster and anyway the one we had since 2011
}
public String getClasspathConfiguration() {
return classpathConfiguration;
}
public void setClasspathConfiguration(final String classpathConfiguration) {
this.classpathConfiguration = classpathConfiguration;
}
public boolean isHttp2() {
return http2;
}
public void setHttp2(final boolean http2) {
this.http2 = http2;
}
public void setConfigurationCustomizers(final String configurationCustomizers) {
this.configurationCustomizers = configurationCustomizers;
}
public String getConfigurationCustomizers() {
return configurationCustomizers;
}
public boolean isWebResourcesCached() {
return webResourcesCached;
}
public void setWebResourcesCached(final boolean webResourcesCached) {
this.webResourcesCached = webResourcesCached;
}
public boolean isWithEjbRemote() {
return withEjbRemote;
}
public void setWithEjbRemote(final boolean withEjbRemote) {
this.withEjbRemote = withEjbRemote;
}
public int getHttpsPort() {
return httpsPort;
}
public void setHttpsPort(final int httpsPort) {
this.httpsPort = httpsPort;
}
public boolean isSsl() {
return ssl;
}
public void setSsl(final boolean ssl) {
this.ssl = ssl;
}
public String getKeystoreFile() {
return keystoreFile;
}
public void setKeystoreFile(final String keystoreFile) {
this.keystoreFile = keystoreFile;
}
public String getKeystorePass() {
return keystorePass;
}
public void setKeystorePass(final String keystorePass) {
this.keystorePass = keystorePass;
}
public String getKeystoreType() {
return keystoreType;
}
public void setKeystoreType(final String keystoreType) {
this.keystoreType = keystoreType;
}
public String getClientAuth() {
return clientAuth;
}
public void setClientAuth(final String clientAuth) {
this.clientAuth = clientAuth;
}
public String getKeyAlias() {
return keyAlias;
}
public void setKeyAlias(final String keyAlias) {
this.keyAlias = keyAlias;
}
public String getSslProtocol() {
return sslProtocol;
}
public void setSslProtocol(final String sslProtocol) {
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>();
if (getStopPort() > 0) {
value.add(getStopPort());
}
if (getHttpPort() > 0) {
value.add(getHttpPort());
}
if (getHttpsPort() > 0) {
value.add(getHttpsPort());
}
return toInts(value);
}
public Properties systemPropertiesAsProperties() {
if (properties == null || properties.isEmpty()) {
return new Properties();
}
final Properties properties = toProperties(this.properties);
if (properties != null && isUnsafeEjbd() &&
"*".equals(properties.getProperty("tomee.serialization.class.blacklist", "-").trim())) {
properties.remove("tomee.serialization.class.blacklist");
properties.put("tomee.serialization.class.whitelist", "*");
System.setProperty("tomee.serialization.class.blacklist", System.getProperty("tomee.serialization.class.blacklist", "-"));
}
return 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(value.getBytes());
try {
properties.load(bais);
} catch (final IOException e) {
throw new OpenEJBRuntimeException(e);
} finally {
try {
IO.close(bais);
} catch (final IOException ignored) {
// no-op
}
}
return properties;
}
}