/*
* Copyright 2007 Alin Dreghiciu.
* Copyright (C) 2014 Guillaume Nodet
*
* 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.url.mvn.internal.config;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.Map;
import org.apache.maven.settings.Settings;
import org.ops4j.util.property.PropertyResolver;
/**
* Handler configuration.
*
* @author Alin Dreghiciu
* @author Guillaume Nodet
* @since August 11, 2007
*/
public interface MavenConfiguration {
boolean isOffline();
/**
* Returns true if the certificate should be checked on SSL connection, false otherwise.
*
* @return true if the certificate should be checked
*/
Boolean getCertificateCheck();
/**
* Returns the URL of maven settings file.
*
* @return the url to settings file
*/
URL getSettingsFileUrl();
/**
* Returns a list of default repositories to be searched before any other repositories.
*
* @return a list of default repositories. List can be null or empty if there are not default repositories to be searched.
*/
List<MavenRepositoryURL> getDefaultRepositories()
throws MalformedURLException;
/**
* Returns a list of repositories to be searched.
*
* @return a list of repositories. List can be null or empty if there are no repositories to be searched.
*/
List<MavenRepositoryURL> getRepositories()
throws MalformedURLException;
/**
* Global repository update policy.
*
* See {@link org.ops4j.pax.url.mvn.ServiceConstants#PROPERTY_GLOBAL_UPDATE_POLICY}
*
* @return repository update policy or null if not set
*/
String getGlobalUpdatePolicy();
/**
* Global repository update policy.
*
* See {@link org.ops4j.pax.url.mvn.ServiceConstants#PROPERTY_GLOBAL_CHECKSUM_POLICY}
*
* @return repository update policy or null if not set
*/
String getGlobalChecksumPolicy();
/**
* Returns the url of local repository.
*
* @return url of local repository. Can be null if there is no local repository.
*/
MavenRepositoryURL getLocalRepository();
/**
* Returns true if the fallback repositories should be used instead of default ones.
* Default value is true.
*
* @return true if the fallback repositories should be used
*/
Boolean useFallbackRepositories();
/**
* Returns the read timeout configured in case the maven artifact is retrieved from a
* remote location.
*
* @return the timeout in case artifacts are retrieved from a remote location
*/
Integer getTimeout();
/**
* @param url Enables the proxy server for a given URL.
*/
void enableProxy( URL url );
/**
* Returns the active proxy settings from settings.xml
* The fields are user, pass, host, port, nonProxyHosts, protocol.
*
* @param protocols protocols to be recognized.
*
* @return the active proxy settings
*/
Map<String, Map<String, String>> getProxySettings( String... protocols );
/**
* Returns the mirror settings from settings.xml.
* The fields are id, url, mirrorOf, layout, mirrorOfLayouts.
*
* @return the mirror settings
*/
Map<String, Map<String, String>> getMirrors();
Settings getSettings();
String getSecuritySettings();
PropertyResolver getPropertyResolver();
/**
* Returns generic property by name.
*
* @param name
* @param defaultValue
* @param clazz
* @return
*/
<T> T getProperty(String name, T defaultValue, Class<T> clazz);
/**
* Returns PID for properties used by this configuration. It's used as prefix for properties in
* associated {@link PropertyResolver}
* @return
*/
String getPid();
}