/* * 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.common; import org.jboss.arquillian.config.descriptor.api.Multiline; import org.jboss.arquillian.container.spi.ConfigurationException; import org.jboss.arquillian.container.spi.client.container.ContainerConfiguration; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; import static java.util.Arrays.asList; @SuppressWarnings("UnusedDeclaration") public class TomEEConfiguration implements ContainerConfiguration { protected boolean exportConfAsSystemProperty; protected int httpsPort = 8443; protected int httpPort = 8080; protected int stopPort = 8005; protected String dir = System.getProperty("java.io.tmpdir") + "/arquillian-apache-tomee"; protected String appWorkingDir = System.getProperty("java.io.tmpdir") + "/arquillian-tomee-app-working-dir"; protected String host = "localhost"; protected String stopHost = "localhost"; // generally localhost but host (http) can be different protected String stopCommand = "SHUTDOWN"; // default one - can be overriden in server.xml protected String serverXml; protected String portRange = ""; // only used if port < 0, empty means whatever, can be "1024-65535" protected String preloadClasses; // just a client classloader.loadClass(), value is comma separated qualified names. Useful with maven resolver for instance protected boolean quickSession = true; protected boolean unsafeEjbd = true; protected boolean unpackWars = true; protected String properties = ""; protected String webContextToUseWithEars; protected boolean keepServerXmlAsThis; protected boolean singleDumpByArchiveName; protected Collection<String> singleDeploymentByArchiveName = Collections.emptyList(); private String arquillianProtocol = "Servlet 2.5"; public String getArquillianProtocol() { return arquillianProtocol; } public void setArquillianProtocol(final String arquillianProtocol) { this.arquillianProtocol = arquillianProtocol; } public boolean isUnsafeEjbd() { return unsafeEjbd; } public void setUnsafeEjbd(final boolean unsafeEjbd) { this.unsafeEjbd = unsafeEjbd; } public boolean isUnpackWars() { return unpackWars; } public void setUnpackWars(final boolean unpackWars) { this.unpackWars = unpackWars; } public int getHttpsPort() { return httpsPort; } public void setHttpsPort(final int httpsPort) { this.httpsPort = httpsPort; } public int getHttpPort() { return httpPort; } public void setHttpPort(final int httpPort) { this.httpPort = httpPort; } public int getStopPort() { return stopPort; } public void setStopPort(final int stopPort) { this.stopPort = stopPort; } public String getDir() { return dir; } public void setDir(final String dir) { this.dir = dir; } public String getAppWorkingDir() { return appWorkingDir; } public void setAppWorkingDir(final String appWorkingDir) { this.appWorkingDir = appWorkingDir; } public void validate() throws ConfigurationException { } public boolean getExportConfAsSystemProperty() { return exportConfAsSystemProperty; } public void setExportConfAsSystemProperty(final boolean exportConfAsSystemProperty) { this.exportConfAsSystemProperty = exportConfAsSystemProperty; } public String getHost() { return host; } public void setHost(final String host) { this.host = host; } public String getServerXml() { return serverXml; } public void setServerXml(final String serverXml) { this.serverXml = serverXml; } public String getProperties() { return properties; } @Multiline public void setProperties(final String properties) { this.properties = properties; } public String systemProperties() { return properties.replaceAll("\n *", "\n"); } public String getPortRange() { return portRange; } public void setPortRange(final String portRange) { this.portRange = portRange; } public boolean isQuickSession() { return quickSession; } public void setQuickSession(final boolean quickSession) { this.quickSession = quickSession; } public int[] portsAlreadySet() { final List<Integer> value = new ArrayList<Integer>(); if (stopPort > 0) { value.add(stopPort); } if (httpPort > 0) { value.add(httpPort); } if (httpsPort > 0) { value.add(httpsPort); } return toInts(value); } protected int[] toInts(final List<Integer> values) { final int[] array = new int[values.size()]; for (int i = 0; i < array.length; i++) { array[i] = values.get(i); } return array; } public String getStopHost() { return stopHost; } public void setStopHost(final String stopHost) { this.stopHost = stopHost; } public String getStopCommand() { return stopCommand + Character.toString((char) 0); // last char to avoid warning/error log message } public void setStopCommand(final String stopCommand) { this.stopCommand = stopCommand; } public String getPreloadClasses() { return preloadClasses; } public void setPreloadClasses(final String preloadClasses) { this.preloadClasses = preloadClasses; } public String getWebContextToUseWithEars() { return webContextToUseWithEars; } public void setWebContextToUseWithEars(final String webContextToUseWithEars) { this.webContextToUseWithEars = webContextToUseWithEars; } public boolean getKeepServerXmlAsThis() { return keepServerXmlAsThis; } public void setKeepServerXmlAsThis(final boolean keepServerXmlAsThis) { this.keepServerXmlAsThis = keepServerXmlAsThis; } public boolean isSingleDumpByArchiveName() { return singleDumpByArchiveName; } public void setSingleDumpByArchiveName(final boolean singleDumpByArchiveName) { this.singleDumpByArchiveName = singleDumpByArchiveName; } public boolean isSingleDeploymentByArchiveName(final String name) { return singleDeploymentByArchiveName.contains(name) || singleDeploymentByArchiveName.contains("*") || singleDeploymentByArchiveName.contains("true"); } public void setSingleDeploymentByArchiveName(final String singleDeploymentByArchiveName) { this.singleDeploymentByArchiveName = singleDeploymentByArchiveName == null || singleDeploymentByArchiveName.trim().isEmpty() ? Collections.<String>emptyList() : new HashSet<String>(asList(singleDeploymentByArchiveName.split(" *, *"))); this.singleDumpByArchiveName = true; // implied otherwise what would be the sense? } }