/* * 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; } }