blob: b7d755de8a4be1d7a00772a09471c22ea5b2a4c8 [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.karaf.tooling.exam.options;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.options.MavenUrlReference;
import java.io.File;
public class KarafDistributionBaseConfigurationOption implements Option {
protected String frameworkURL;
protected MavenUrlReference frameworkURLReference;
protected String name;
protected String karafVersion;
protected File unpackDirectory;
protected boolean useDeployFolder = true;
public KarafDistributionBaseConfigurationOption() {
frameworkURL = null;
frameworkURLReference = null;
name = null;
karafVersion = null;
}
public KarafDistributionBaseConfigurationOption(String frameworkURL, String name, String karafVersion) {
this.frameworkURL = frameworkURL;
frameworkURLReference = null;
this.name = name;
this.karafVersion = karafVersion;
}
public KarafDistributionBaseConfigurationOption(MavenUrlReference frameworkURLReference, String name,
String karafVersion) {
frameworkURL = null;
this.frameworkURLReference = frameworkURLReference;
this.name = name;
this.karafVersion = karafVersion;
}
public KarafDistributionBaseConfigurationOption(MavenUrlReference frameworkURLReference) {
frameworkURL = null;
this.frameworkURLReference = frameworkURLReference;
}
/**
* Simply clones the insterted {@link KarafDistributionConfigurationOption}
*/
public KarafDistributionBaseConfigurationOption(KarafDistributionBaseConfigurationOption base) {
frameworkURL = base.frameworkURL;
frameworkURLReference = base.frameworkURLReference;
name = base.name;
karafVersion = base.karafVersion;
unpackDirectory = base.unpackDirectory;
useDeployFolder = base.useDeployFolder;
}
/**
* Sets the URL of the framework as a String (for example a file).
*/
public KarafDistributionBaseConfigurationOption frameworkUrl(String frameworkURL) {
this.frameworkURL = frameworkURL;
return this;
}
/**
* Sets the URL of the frameworks as a maven reference.
*/
public KarafDistributionBaseConfigurationOption frameworkUrl(MavenUrlReference frameworkURL) {
frameworkURLReference = frameworkURL;
return this;
}
/**
* Set's the name of the framework. This is only used for logging.
*/
public KarafDistributionBaseConfigurationOption name(String name) {
this.name = name;
return this;
}
/**
* The version of karaf used by the framework. That one is required since there is the high possibility that
* configuration is different between various karaf versions.
*/
public KarafDistributionBaseConfigurationOption karafVersion(String karafVersion) {
this.karafVersion = karafVersion;
return this;
}
/**
* Define the unpack directory for the karaf distribution. In this directory a UUID named directory will be created
* for each environment.
*/
public KarafDistributionBaseConfigurationOption unpackDirectory(File unpackDirectory) {
this.unpackDirectory = unpackDirectory;
return this;
}
/**
* Per default the framework simply copies all referenced artifacts (via Pax Exam DistributionOption) to the deploy
* folder of the karaf (based) distribution. If you don't have such a folder (for any reason) you can set this
* option to false. PaxExam Karaf will then try to add those deployment urls directly to a features xml instead of
* copying those files to the deploy folder.
*/
public KarafDistributionBaseConfigurationOption useDeployFolder(boolean useDeployFolder) {
this.useDeployFolder = useDeployFolder;
return this;
}
public String getFrameworkURL() {
if (frameworkURL == null && frameworkURLReference == null) {
throw new IllegalStateException("Either frameworkurl or frameworkUrlReference need to be set.");
}
return frameworkURL != null ? frameworkURL : frameworkURLReference.getURL();
}
public String getName() {
return name;
}
public String getKarafVersion() {
return karafVersion;
}
public File getUnpackDirectory() {
return unpackDirectory;
}
public boolean isUseDeployFolder() {
return useDeployFolder;
}
}