All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ops4j.pax.exam.options.MavenUrlReference Maven / Gradle / Ivy

/*
 * Copyright 2009 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.options;

/**
 * Option specifying a maven url (Pax URL mvn: handler).
 * 
 * @author Alin Dreghiciu ([email protected])
 * @since 0.5.0, April 26, 2009
 */
public interface MavenUrlReference extends UrlReference {

    /**
     * Sets the artifact group id.
     * 
     * @param groupId
     *            artifact group id (cannot be null or empty)
     * 
     * @return itself, for fluent api usage
     * 
     * @throws IllegalArgumentException
     *             - If group id is null or empty
     */
    MavenUrlReference groupId(String groupId);

    /**
     * Sets the artifact id.
     * 
     * @param artifactId
     *            artifact id (cannot be null or empty)
     * 
     * @return itself, for fluent api usage
     * 
     * @throws IllegalArgumentException
     *             - If artifact id is null or empty
     */
    MavenUrlReference artifactId(String artifactId);

    /**
     * Sets the artifact type. Do not set the value (use this method) if default artifact type
     * should be used.
     * 
     * @param type
     *            artifact type (cannot be null or empty)
     * 
     * @return itself, for fluent api usage
     * 
     * @throws IllegalArgumentException
     *             - If type is null or empty
     */
    MavenUrlReference type(String type);

    /**
     * Sets the artifact classifier.
     * 
     * @param classifier
     *            artifact classifier (cannot be null or empty)
     * 
     * @return itself, for fluent api usage
     * 
     * @throws IllegalArgumentException
     *             - If classifier is null or empty
     */
    MavenUrlReference classifier(String classifier);

    /**
     * Sets the artifact version or version range. If version is a SNAPSHOT version the bundle will
     * be set to updatable, otherwise the bundle will not be updated. This handling happens only if
     * the user dows not use the update() by itself (see
     * {@link org.ops4j.pax.exam.options.ProvisionControl#update(Boolean)}).
     * 
     * @param version
     *            artifact version / version range (cannot be null or empty)
     * 
     * @return itself, for fluent api usage
     * 
     * @throws IllegalArgumentException
     *             - If version is null or empty
     */
    MavenUrlReference version(String version);

    /**
     * Determines the artifact version using an {@link MavenUrlReference.VersionResolver}.
     * 
     * @param resolver
     *            a {@link MavenUrlReference.VersionResolver} (cannot be null)
     * 
     * @return itself, for fluent api usage
     * 
     * @throws IllegalArgumentException
     *             - If version is null
     */
    MavenUrlReference version(VersionResolver resolver);

    /**
     * Version will be discovered from the dependencies of Maven project that includes the
     * regression.
     * 
     * @return itself, for fluent api usage
     */
    MavenUrlReference versionAsInProject();

    /**
     * Returns true if the specified version is a snapshot version, false if not and null if the
     * version is not yet specified.
     * 
     * @return true if the specified version is a snapshot version, false if not and null if the
     *         version is not yet specified.
     */
    Boolean isSnapshot();

    /**
     * Resolves versions based on maven artifact groupId / atifactid.
     */
    public interface VersionResolver {

        /**
         * Getter.
         * 
         * @param groupId
         *            groupd id
         * @param artifactId
         *            artifact id
         * 
         * @return discovered version
         */
        String getVersion(String groupId, String artifactId);

    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy