/*
* Copyright 2008 Alin Dreghiciu.
*
* Licensed 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.ops4j.pax.exam.container.def;
import java.util.ArrayList;
import java.util.List;
import static org.ops4j.lang.NullArgumentException.*;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.container.def.options.*;
import org.ops4j.pax.exam.options.DefaultCompositeOption;
import org.ops4j.pax.exam.options.UrlReference;
/**
* Factory methods for Pax Runner options.
*
* @author Alin Dreghiciu (adreghiciu@gmail.com)
* @since 0.3.0, December 08, 2008
*/
public class PaxRunnerOptions
{
/**
* Utility class. Ment to be used via the static factory methods.
*/
private PaxRunnerOptions()
{
// utility class
}
/**
* Creates a composite option of {@link ProfileOption}.
*
* @param profiles profile options
*
* @return composite option of profiles options
*/
public static Option profiles( final ProfileOption... profiles )
{
return new DefaultCompositeOption( profiles );
}
/**
* Creates a {@link ProfileOption} by profile name.
*
* @param name profile name
*
* @return profile option
*/
public static ProfileOption profile( final String name )
{
return new ProfileOption( name );
}
/**
* Creates a {@link ProfileOption} by profile name and version.
*
* @param name profile name
* @param version profile version
*
* @return profile option
*/
public static ProfileOption profile( final String name,
final String version )
{
return new ProfileOption( name, version );
}
/**
* Creates a Http Service {@link ProfileOption} (--profiles=web).
*
* @return web profile option
*/
public static ProfileOption webProfile()
{
return new ProfileOption( "web" );
}
/**
* Creates a Log Service {@link ProfileOption} (--profiles=log).
*
* @return log profile option
*/
public static ProfileOption logProfile()
{
return new ProfileOption( "log" );
}
/**
* Creates a Configuration Admin Service {@link ProfileOption} (--profiles=config).
*
* @return config profile option
*/
public static ProfileOption configProfile()
{
return new ProfileOption( "config" );
}
/**
* Creates a Declarative Service {@link ProfileOption} (--profiles=ds).
*
* @return ds profile option
*/
public static ProfileOption dsProfile()
{
return new ProfileOption( "ds" );
}
/**
* Creates a Log Service {@link ProfileOption} (--profiles=compendium).
*
* @return log profile option
*/
public static ProfileOption compendiumProfile()
{
return new ProfileOption( "compendium" );
}
/**
* Creates a {@link CleanCachesOption}.
*
* @return clean caches option
*/
public static CleanCachesOption cleanCaches()
{
return new CleanCachesOption();
}
/**
* Creates a {@link org.ops4j.pax.exam.container.def.options.RBCLookupTimeoutOption}.
*
* @param timeoutInMillis timeout in millis
*
* @return timeout option
*/
public static RBCLookupTimeoutOption waitForRBCFor( final Integer timeoutInMillis )
{
return new RBCLookupTimeoutOption( timeoutInMillis );
}
/**
* Creates a composite option of {@link VMOption}s.
*
* @param vmOptions virtual machine options (cannot be null or containing null entries)
*
* @return composite option of virtual machine options
*
* @throws IllegalArgumentException - If urls array is null or contains null entries
*/
public static Option vmOptions( final String... vmOptions )
{
validateNotEmptyContent( vmOptions, true, "VM options" );
final List<VMOption> options = new ArrayList<VMOption>();
for( String vmOption : vmOptions )
{
options.add( vmOption( vmOption ) );
}
return vmOptions( options.toArray( new VMOption[options.size()] ) );
}
/**
* Creates a composite option of {@link VMOption}s.
*
* @param vmOptions virtual machine options
*
* @return composite option of virtual machine options
*/
public static Option vmOptions( final VMOption... vmOptions )
{
return new DefaultCompositeOption( vmOptions );
}
/**
* Creates a {@link VMOption}.
*
* @param vmOption virtual machine option
*
* @return virtual machine option
*/
public static VMOption vmOption( final String vmOption )
{
return new VMOption( vmOption );
}
/**
* Creates a {@link org.ops4j.pax.exam.container.def.options.RawPaxRunnerOptionOption}.
*
* @param key option name (key)
* @param value option value
*
* @return a PaxRunner Option instance.
*/
public static RawPaxRunnerOptionOption rawPaxRunnerOption( final String key,
final String value )
{
return new RawPaxRunnerOptionOption( key, value );
}
/**
* Creates a {@link org.ops4j.pax.exam.container.def.options.RawPaxRunnerOptionOption}.
*
* @param option full Pax Runner option (including --)
*
* @return a PaxRunner Option instance.
*/
public static RawPaxRunnerOptionOption rawPaxRunnerOption( final String option )
{
return new RawPaxRunnerOptionOption( option );
}
/**
* Creates a composite option of {@link RepositoryOption}s.
*
* @param repositoryUrls virtual machine options (cannot be null or containing null entries)
*
* @return composite option of virtual machine options
*
* @throws IllegalArgumentException - If urls array is null or contains null entries
*/
public static Option repositories( final String... repositoryUrls )
{
validateNotEmptyContent( repositoryUrls, true, "Repository URLs" );
final List<RepositoryOption> options = new ArrayList<RepositoryOption>();
for( String repositoryUrl : repositoryUrls )
{
options.add( repository( repositoryUrl ) );
}
return repositories( options.toArray( new RepositoryOption[options.size()] ) );
}
/**
* Creates a composite option of {@link RepositoryOption}s.
*
* @param repositoryOptions repository options
*
* @return composite option of repository options
*/
public static Option repositories( final RepositoryOption... repositoryOptions )
{
return new DefaultCompositeOption( repositoryOptions );
}
/**
* Creates a {@link LocalRepositoryOption}.
*
* @param path localRepository path or url
*
* @return localRepository option
*/
public static LocalRepositoryOption localRepository( final String path )
{
return new LocalRepositoryOption( path );
}
/**
* Creates a {@link RepositoryOption}.
*
* @param repositoryUrl repository url
*
* @return repository option
*/
public static RepositoryOption repository( final String repositoryUrl )
{
return new RepositoryOptionImpl( repositoryUrl );
}
/**
* Creates a {@link ExcludeDefaultRepositoriesOption}.
*
* @return option
*/
public static ExcludeDefaultRepositoriesOption excludeDefaultRepositories()
{
return new ExcludeDefaultRepositoriesOption();
}
/**
* Creates a {@link RawScannerProvisionOption}.
*
* @param provisionSpec raw provisioning spec
*
* @return raw scanner option
*/
public static RawScannerProvisionOption scan( final String provisionSpec )
{
return new RawScannerProvisionOption( provisionSpec );
}
/**
* Creates a {@link DirScannerProvisionOption}.
*
* @param directory directory to be scanned
*
* @return directory scanner option
*/
public static DirScannerProvisionOption scanDir( final String directory )
{
return new DirScannerProvisionOption( directory );
}
/**
* Creates a {@link PomScannerProvisionOption}.
*
* @param url to pom
*
* @return pom scanner option
*/
public static PomScannerProvisionOption scanPom( final String url )
{
return new PomScannerProvisionOption( url );
}
/**
* Creates a {@link PomScannerProvisionOption}.
*
* @return pom scanner option
*/
public static PomScannerProvisionOption scanPom()
{
return new PomScannerProvisionOption();
}
/**
* Creates a {@link FileScannerProvisionOption}.
*
* @param fileUrl url of the file to be scanned
*
* @return file scanner option
*/
public static FileScannerProvisionOption scanFile( final String fileUrl )
{
return new FileScannerProvisionOption( fileUrl );
}
/**
* Creates a {@link FileScannerProvisionOption}.
*
* @param fileUrl url of the file to be scanned
*
* @return file scanner option
*/
public static FileScannerProvisionOption scanFile( final UrlReference fileUrl )
{
return new FileScannerProvisionOption( fileUrl );
}
/**
* Creates a {@link FeaturesScannerProvisionOption}.
*
* @param repositoryUrl url of features respository to be scanned
* @param features features to be scanned
*
* @return file scanner option
*/
public static FeaturesScannerProvisionOption scanFeatures( final String repositoryUrl,
final String... features )
{
return new FeaturesScannerProvisionOption( repositoryUrl, features );
}
/**
* Creates a {@link FileScannerProvisionOption}.
*
* @param repositoryUrl url of features respository to be scanned
* @param features features to be scanned
*
* @return file scanner option
*/
public static FeaturesScannerProvisionOption scanFeatures( final UrlReference repositoryUrl,
final String... features )
{
return new FeaturesScannerProvisionOption( repositoryUrl, features );
}
/**
* Creates a {@link CompositeScannerProvisionOption}.
*
* @param fileUrl url of the file to be scanned
*
* @return composite scanner option
*/
public static CompositeScannerProvisionOption scanComposite( final String fileUrl )
{
return new CompositeScannerProvisionOption( fileUrl );
}
/**
* Creates a {@link CompositeScannerProvisionOption}.
*
* @param fileUrl url of the file to be scanned
*
* @return composite scanner option
*/
public static CompositeScannerProvisionOption scanComposite( final UrlReference fileUrl )
{
return new CompositeScannerProvisionOption( fileUrl );
}
/**
* Creates a {@link AutoWrapOption}.
*
* @return AutoWrapOption
*/
public static AutoWrapOption autoWrap()
{
return new AutoWrapOption();
}
/**
* Creates a {@link BundleScannerProvisionOption}.
*
* @param bundleUrl url of the bundle to be scanned
*
* @return bundle scanner option
*/
public static BundleScannerProvisionOption scanBundle( final String bundleUrl )
{
return new BundleScannerProvisionOption( bundleUrl );
}
/**
* Creates a {@link BundleScannerProvisionOption}.
*
* @param bundleUrl url of the bundle to be scanned
*
* @return bundle scanner option
*/
public static BundleScannerProvisionOption scanBundle( final UrlReference bundleUrl )
{
return new BundleScannerProvisionOption( bundleUrl );
}
/**
* Creates a {@link WorkingDirectoryOption}.
*
* @param directory url of the bundle to be scanned
*
* @return working directory option
*/
public static WorkingDirectoryOption workingDirectory( final String directory )
{
return new WorkingDirectoryOption( directory );
}
}