http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/pom.xml ---------------------------------------------------------------------- diff --git a/aether-api/pom.xml b/aether-api/pom.xml deleted file mode 100644 index 949aae9..0000000 --- a/aether-api/pom.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- - 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. ---> - -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <parent> - <groupId>org.apache.maven.aether</groupId> - <artifactId>aether</artifactId> - <version>1.0.3-SNAPSHOT</version> - </parent> - - <artifactId>aether-api</artifactId> - - <name>Aether API</name> - <description> - The application programming interface for the repository system. - </description> - - <dependencies> - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.hamcrest</groupId> - <artifactId>hamcrest-library</artifactId> - <scope>test</scope> - </dependency> - </dependencies> -</project>
http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java b/aether-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java deleted file mode 100644 index 20df431..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/AbstractForwardingRepositorySystemSession.java +++ /dev/null @@ -1,189 +0,0 @@ -package org.eclipse.aether; - -/* - * 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. - */ - -import java.util.Map; - -import org.eclipse.aether.artifact.ArtifactTypeRegistry; -import org.eclipse.aether.collection.DependencyGraphTransformer; -import org.eclipse.aether.collection.DependencyManager; -import org.eclipse.aether.collection.DependencySelector; -import org.eclipse.aether.collection.DependencyTraverser; -import org.eclipse.aether.collection.VersionFilter; -import org.eclipse.aether.repository.AuthenticationSelector; -import org.eclipse.aether.repository.LocalRepository; -import org.eclipse.aether.repository.LocalRepositoryManager; -import org.eclipse.aether.repository.MirrorSelector; -import org.eclipse.aether.repository.ProxySelector; -import org.eclipse.aether.repository.WorkspaceReader; -import org.eclipse.aether.resolution.ArtifactDescriptorPolicy; -import org.eclipse.aether.resolution.ResolutionErrorPolicy; -import org.eclipse.aether.transfer.TransferListener; - -/** - * A special repository system session to enable decorating or proxying another session. To do so, clients have to - * create a subclass and implement {@link #getSession()}. - */ -public abstract class AbstractForwardingRepositorySystemSession - implements RepositorySystemSession -{ - - /** - * Creates a new forwarding session. - */ - protected AbstractForwardingRepositorySystemSession() - { - } - - /** - * Gets the repository system session to which this instance forwards calls. It's worth noting that this class does - * not save/cache the returned reference but queries this method before each forwarding. Hence, the session - * forwarded to may change over time or depending on the context (e.g. calling thread). - * - * @return The repository system session to forward calls to, never {@code null}. - */ - protected abstract RepositorySystemSession getSession(); - - public boolean isOffline() - { - return getSession().isOffline(); - } - - public boolean isIgnoreArtifactDescriptorRepositories() - { - return getSession().isIgnoreArtifactDescriptorRepositories(); - } - - public ResolutionErrorPolicy getResolutionErrorPolicy() - { - return getSession().getResolutionErrorPolicy(); - } - - public ArtifactDescriptorPolicy getArtifactDescriptorPolicy() - { - return getSession().getArtifactDescriptorPolicy(); - } - - public String getChecksumPolicy() - { - return getSession().getChecksumPolicy(); - } - - public String getUpdatePolicy() - { - return getSession().getUpdatePolicy(); - } - - public LocalRepository getLocalRepository() - { - return getSession().getLocalRepository(); - } - - public LocalRepositoryManager getLocalRepositoryManager() - { - return getSession().getLocalRepositoryManager(); - } - - public WorkspaceReader getWorkspaceReader() - { - return getSession().getWorkspaceReader(); - } - - public RepositoryListener getRepositoryListener() - { - return getSession().getRepositoryListener(); - } - - public TransferListener getTransferListener() - { - return getSession().getTransferListener(); - } - - public Map<String, String> getSystemProperties() - { - return getSession().getSystemProperties(); - } - - public Map<String, String> getUserProperties() - { - return getSession().getUserProperties(); - } - - public Map<String, Object> getConfigProperties() - { - return getSession().getConfigProperties(); - } - - public MirrorSelector getMirrorSelector() - { - return getSession().getMirrorSelector(); - } - - public ProxySelector getProxySelector() - { - return getSession().getProxySelector(); - } - - public AuthenticationSelector getAuthenticationSelector() - { - return getSession().getAuthenticationSelector(); - } - - public ArtifactTypeRegistry getArtifactTypeRegistry() - { - return getSession().getArtifactTypeRegistry(); - } - - public DependencyTraverser getDependencyTraverser() - { - return getSession().getDependencyTraverser(); - } - - public DependencyManager getDependencyManager() - { - return getSession().getDependencyManager(); - } - - public DependencySelector getDependencySelector() - { - return getSession().getDependencySelector(); - } - - public VersionFilter getVersionFilter() - { - return getSession().getVersionFilter(); - } - - public DependencyGraphTransformer getDependencyGraphTransformer() - { - return getSession().getDependencyGraphTransformer(); - } - - public SessionData getData() - { - return getSession().getData(); - } - - public RepositoryCache getCache() - { - return getSession().getCache(); - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java b/aether-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java deleted file mode 100644 index f42d15e..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/AbstractRepositoryListener.java +++ /dev/null @@ -1,112 +0,0 @@ -package org.eclipse.aether; - -/* - * 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. - */ - -/** - * A skeleton implementation for custom repository listeners. The callback methods in this class do nothing. - */ -public abstract class AbstractRepositoryListener - implements RepositoryListener -{ - - /** - * Enables subclassing. - */ - protected AbstractRepositoryListener() - { - } - - public void artifactDeployed( RepositoryEvent event ) - { - } - - public void artifactDeploying( RepositoryEvent event ) - { - } - - public void artifactDescriptorInvalid( RepositoryEvent event ) - { - } - - public void artifactDescriptorMissing( RepositoryEvent event ) - { - } - - public void artifactDownloaded( RepositoryEvent event ) - { - } - - public void artifactDownloading( RepositoryEvent event ) - { - } - - public void artifactInstalled( RepositoryEvent event ) - { - } - - public void artifactInstalling( RepositoryEvent event ) - { - } - - public void artifactResolved( RepositoryEvent event ) - { - } - - public void artifactResolving( RepositoryEvent event ) - { - } - - public void metadataDeployed( RepositoryEvent event ) - { - } - - public void metadataDeploying( RepositoryEvent event ) - { - } - - public void metadataDownloaded( RepositoryEvent event ) - { - } - - public void metadataDownloading( RepositoryEvent event ) - { - } - - public void metadataInstalled( RepositoryEvent event ) - { - } - - public void metadataInstalling( RepositoryEvent event ) - { - } - - public void metadataInvalid( RepositoryEvent event ) - { - } - - public void metadataResolved( RepositoryEvent event ) - { - } - - public void metadataResolving( RepositoryEvent event ) - { - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java b/aether-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java deleted file mode 100644 index bc1738f..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/ConfigurationProperties.java +++ /dev/null @@ -1,152 +0,0 @@ -package org.eclipse.aether; - -/* - * 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. - */ - -/** - * The keys and defaults for common configuration properties. - * - * @see RepositorySystemSession#getConfigProperties() - */ -public final class ConfigurationProperties -{ - - private static final String PREFIX_AETHER = "aether."; - - private static final String PREFIX_CONNECTOR = PREFIX_AETHER + "connector."; - - /** - * The prefix for properties that control the priority of pluggable extensions like transporters. For example, for - * an extension with the fully qualified class name "org.eclipse.MyExtensionFactory", the configuration properties - * "aether.priority.org.eclipse.MyExtensionFactory", "aether.priority.MyExtensionFactory" and - * "aether.priority.MyExtension" will be consulted for the priority, in that order (obviously, the last key is only - * tried if the class name ends with "Factory"). The corresponding value is a float and the special value - * {@link Float#NaN} or "NaN" (case-sensitive) can be used to disable the extension. - */ - public static final String PREFIX_PRIORITY = PREFIX_AETHER + "priority."; - - /** - * A flag indicating whether the priorities of pluggable extensions are implicitly given by their iteration order - * such that the first extension has the highest priority. If set, an extension's built-in priority as well as any - * corresponding {@code aether.priority.*} configuration properties are ignored when searching for a suitable - * implementation among the available extensions. This priority mode is meant for cases where the application will - * present/inject extensions in the desired search order. - * - * @see #DEFAULT_IMPLICIT_PRIORITIES - */ - public static final String IMPLICIT_PRIORITIES = PREFIX_PRIORITY + "implicit"; - - /** - * The default extension priority mode if {@link #IMPLICIT_PRIORITIES} isn't set. - */ - public static final boolean DEFAULT_IMPLICIT_PRIORITIES = false; - - /** - * A flag indicating whether interaction with the user is allowed. - * - * @see #DEFAULT_INTERACTIVE - */ - public static final String INTERACTIVE = PREFIX_AETHER + "interactive"; - - /** - * The default interactive mode if {@link #INTERACTIVE} isn't set. - */ - public static final boolean DEFAULT_INTERACTIVE = false; - - /** - * The user agent that repository connectors should report to servers. - * - * @see #DEFAULT_USER_AGENT - */ - public static final String USER_AGENT = PREFIX_CONNECTOR + "userAgent"; - - /** - * The default user agent to use if {@link #USER_AGENT} isn't set. - */ - public static final String DEFAULT_USER_AGENT = "Aether"; - - /** - * The maximum amount of time (in milliseconds) to wait for a successful connection to a remote server. Non-positive - * values indicate no timeout. - * - * @see #DEFAULT_CONNECT_TIMEOUT - */ - public static final String CONNECT_TIMEOUT = PREFIX_CONNECTOR + "connectTimeout"; - - /** - * The default connect timeout to use if {@link #CONNECT_TIMEOUT} isn't set. - */ - public static final int DEFAULT_CONNECT_TIMEOUT = 10 * 1000; - - /** - * The maximum amount of time (in milliseconds) to wait for remaining data to arrive from a remote server. Note that - * this timeout does not restrict the overall duration of a request, it only restricts the duration of inactivity - * between consecutive data packets. Non-positive values indicate no timeout. - * - * @see #DEFAULT_REQUEST_TIMEOUT - */ - public static final String REQUEST_TIMEOUT = PREFIX_CONNECTOR + "requestTimeout"; - - /** - * The default request timeout to use if {@link #REQUEST_TIMEOUT} isn't set. - */ - public static final int DEFAULT_REQUEST_TIMEOUT = 1800 * 1000; - - /** - * The request headers to use for HTTP-based repository connectors. The headers are specified using a - * {@code Map<String, String>}, mapping a header name to its value. Besides this general key, clients may also - * specify headers for a specific remote repository by appending the suffix {@code .<repoId>} to this key when - * storing the headers map. The repository-specific headers map is supposed to be complete, i.e. is not merged with - * the general headers map. - */ - public static final String HTTP_HEADERS = PREFIX_CONNECTOR + "http.headers"; - - /** - * The encoding/charset to use when exchanging credentials with HTTP servers. Besides this general key, clients may - * also specify the encoding for a specific remote repository by appending the suffix {@code .<repoId>} to this key - * when storing the charset name. - * - * @see #DEFAULT_HTTP_CREDENTIAL_ENCODING - */ - public static final String HTTP_CREDENTIAL_ENCODING = PREFIX_CONNECTOR + "http.credentialEncoding"; - - /** - * The default encoding/charset to use if {@link #HTTP_CREDENTIAL_ENCODING} isn't set. - */ - public static final String DEFAULT_HTTP_CREDENTIAL_ENCODING = "ISO-8859-1"; - - /** - * A flag indicating whether checksums which are retrieved during checksum validation should be persisted in the - * local filesystem next to the file they provide the checksum for. - * - * @see #DEFAULT_PERSISTED_CHECKSUMS - */ - public static final String PERSISTED_CHECKSUMS = PREFIX_CONNECTOR + "persistedChecksums"; - - /** - * The default checksum persistence mode if {@link #PERSISTED_CHECKSUMS} isn't set. - */ - public static final boolean DEFAULT_PERSISTED_CHECKSUMS = true; - - private ConfigurationProperties() - { - // hide constructor - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java b/aether-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java deleted file mode 100644 index b645f43..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/DefaultRepositoryCache.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.eclipse.aether; - -/* - * 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. - */ - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -/** - * A simplistic repository cache backed by a thread-safe map. The simplistic nature of this cache makes it only suitable - * for use with short-lived repository system sessions where pruning of cache data is not required. - */ -public final class DefaultRepositoryCache - implements RepositoryCache -{ - - private final Map<Object, Object> cache = new ConcurrentHashMap<Object, Object>( 256 ); - - public Object get( RepositorySystemSession session, Object key ) - { - return cache.get( key ); - } - - public void put( RepositorySystemSession session, Object key, Object data ) - { - if ( data != null ) - { - cache.put( key, data ); - } - else - { - cache.remove( key ); - } - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java b/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java deleted file mode 100644 index 93ebaca..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/DefaultRepositorySystemSession.java +++ /dev/null @@ -1,834 +0,0 @@ -package org.eclipse.aether; - -/* - * 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. - */ - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.aether.artifact.ArtifactType; -import org.eclipse.aether.artifact.ArtifactTypeRegistry; -import org.eclipse.aether.collection.DependencyGraphTransformer; -import org.eclipse.aether.collection.DependencyManager; -import org.eclipse.aether.collection.DependencySelector; -import org.eclipse.aether.collection.DependencyTraverser; -import org.eclipse.aether.collection.VersionFilter; -import org.eclipse.aether.repository.Authentication; -import org.eclipse.aether.repository.AuthenticationSelector; -import org.eclipse.aether.repository.LocalRepository; -import org.eclipse.aether.repository.LocalRepositoryManager; -import org.eclipse.aether.repository.MirrorSelector; -import org.eclipse.aether.repository.Proxy; -import org.eclipse.aether.repository.ProxySelector; -import org.eclipse.aether.repository.RemoteRepository; -import org.eclipse.aether.repository.RepositoryPolicy; -import org.eclipse.aether.repository.WorkspaceReader; -import org.eclipse.aether.resolution.ArtifactDescriptorPolicy; -import org.eclipse.aether.resolution.ResolutionErrorPolicy; -import org.eclipse.aether.transfer.TransferListener; - -/** - * A simple repository system session. - * <p> - * <strong>Note:</strong> This class is not thread-safe. It is assumed that the mutators get only called during an - * initialization phase and that the session itself is not changed once initialized and being used by the repository - * system. It is recommended to call {@link #setReadOnly()} once the session has been fully initialized to prevent - * accidental manipulation of it afterwards. - */ -public final class DefaultRepositorySystemSession - implements RepositorySystemSession -{ - - private boolean readOnly; - - private boolean offline; - - private boolean ignoreArtifactDescriptorRepositories; - - private ResolutionErrorPolicy resolutionErrorPolicy; - - private ArtifactDescriptorPolicy artifactDescriptorPolicy; - - private String checksumPolicy; - - private String updatePolicy; - - private LocalRepositoryManager localRepositoryManager; - - private WorkspaceReader workspaceReader; - - private RepositoryListener repositoryListener; - - private TransferListener transferListener; - - private Map<String, String> systemProperties; - - private Map<String, String> systemPropertiesView; - - private Map<String, String> userProperties; - - private Map<String, String> userPropertiesView; - - private Map<String, Object> configProperties; - - private Map<String, Object> configPropertiesView; - - private MirrorSelector mirrorSelector; - - private ProxySelector proxySelector; - - private AuthenticationSelector authenticationSelector; - - private ArtifactTypeRegistry artifactTypeRegistry; - - private DependencyTraverser dependencyTraverser; - - private DependencyManager dependencyManager; - - private DependencySelector dependencySelector; - - private VersionFilter versionFilter; - - private DependencyGraphTransformer dependencyGraphTransformer; - - private SessionData data; - - private RepositoryCache cache; - - /** - * Creates an uninitialized session. <em>Note:</em> The new session is not ready to use, as a bare minimum, - * {@link #setLocalRepositoryManager(LocalRepositoryManager)} needs to be called but usually other settings also - * need to be customized to achieve meaningful behavior. - */ - public DefaultRepositorySystemSession() - { - systemProperties = new HashMap<String, String>(); - systemPropertiesView = Collections.unmodifiableMap( systemProperties ); - userProperties = new HashMap<String, String>(); - userPropertiesView = Collections.unmodifiableMap( userProperties ); - configProperties = new HashMap<String, Object>(); - configPropertiesView = Collections.unmodifiableMap( configProperties ); - mirrorSelector = NullMirrorSelector.INSTANCE; - proxySelector = NullProxySelector.INSTANCE; - authenticationSelector = NullAuthenticationSelector.INSTANCE; - artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE; - data = new DefaultSessionData(); - } - - /** - * Creates a shallow copy of the specified session. Actually, the copy is not completely shallow, all maps holding - * system/user/config properties are copied as well. In other words, invoking any mutator on the new session itself - * has no effect on the original session. Other mutable objects like the session data and cache (if any) are not - * copied and will be shared with the original session unless reconfigured. - * - * @param session The session to copy, must not be {@code null}. - */ - public DefaultRepositorySystemSession( RepositorySystemSession session ) - { - if ( session == null ) - { - throw new IllegalArgumentException( "repository system session not specified" ); - } - - setOffline( session.isOffline() ); - setIgnoreArtifactDescriptorRepositories( session.isIgnoreArtifactDescriptorRepositories() ); - setResolutionErrorPolicy( session.getResolutionErrorPolicy() ); - setArtifactDescriptorPolicy( session.getArtifactDescriptorPolicy() ); - setChecksumPolicy( session.getChecksumPolicy() ); - setUpdatePolicy( session.getUpdatePolicy() ); - setLocalRepositoryManager( session.getLocalRepositoryManager() ); - setWorkspaceReader( session.getWorkspaceReader() ); - setRepositoryListener( session.getRepositoryListener() ); - setTransferListener( session.getTransferListener() ); - setSystemProperties( session.getSystemProperties() ); - setUserProperties( session.getUserProperties() ); - setConfigProperties( session.getConfigProperties() ); - setMirrorSelector( session.getMirrorSelector() ); - setProxySelector( session.getProxySelector() ); - setAuthenticationSelector( session.getAuthenticationSelector() ); - setArtifactTypeRegistry( session.getArtifactTypeRegistry() ); - setDependencyTraverser( session.getDependencyTraverser() ); - setDependencyManager( session.getDependencyManager() ); - setDependencySelector( session.getDependencySelector() ); - setVersionFilter( session.getVersionFilter() ); - setDependencyGraphTransformer( session.getDependencyGraphTransformer() ); - setData( session.getData() ); - setCache( session.getCache() ); - } - - public boolean isOffline() - { - return offline; - } - - /** - * Controls whether the repository system operates in offline mode and avoids/refuses any access to remote - * repositories. - * - * @param offline {@code true} if the repository system is in offline mode, {@code false} otherwise. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setOffline( boolean offline ) - { - failIfReadOnly(); - this.offline = offline; - return this; - } - - public boolean isIgnoreArtifactDescriptorRepositories() - { - return ignoreArtifactDescriptorRepositories; - } - - /** - * Controls whether repositories declared in artifact descriptors should be ignored during transitive dependency - * collection. If enabled, only the repositories originally provided with the collect request will be considered. - * - * @param ignoreArtifactDescriptorRepositories {@code true} to ignore additional repositories from artifact - * descriptors, {@code false} to merge those with the originally specified repositories. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setIgnoreArtifactDescriptorRepositories( boolean ignoreArtifactDescriptorRepositories ) - { - failIfReadOnly(); - this.ignoreArtifactDescriptorRepositories = ignoreArtifactDescriptorRepositories; - return this; - } - - public ResolutionErrorPolicy getResolutionErrorPolicy() - { - return resolutionErrorPolicy; - } - - /** - * Sets the policy which controls whether resolutions errors from remote repositories should be cached. - * - * @param resolutionErrorPolicy The resolution error policy for this session, may be {@code null} if resolution - * errors should generally not be cached. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setResolutionErrorPolicy( ResolutionErrorPolicy resolutionErrorPolicy ) - { - failIfReadOnly(); - this.resolutionErrorPolicy = resolutionErrorPolicy; - return this; - } - - public ArtifactDescriptorPolicy getArtifactDescriptorPolicy() - { - return artifactDescriptorPolicy; - } - - /** - * Sets the policy which controls how errors related to reading artifact descriptors should be handled. - * - * @param artifactDescriptorPolicy The descriptor error policy for this session, may be {@code null} if descriptor - * errors should generally not be tolerated. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setArtifactDescriptorPolicy( ArtifactDescriptorPolicy artifactDescriptorPolicy ) - { - failIfReadOnly(); - this.artifactDescriptorPolicy = artifactDescriptorPolicy; - return this; - } - - public String getChecksumPolicy() - { - return checksumPolicy; - } - - /** - * Sets the global checksum policy. If set, the global checksum policy overrides the checksum policies of the remote - * repositories being used for resolution. - * - * @param checksumPolicy The global checksum policy, may be {@code null}/empty to apply the per-repository policies. - * @return This session for chaining, never {@code null}. - * @see RepositoryPolicy#CHECKSUM_POLICY_FAIL - * @see RepositoryPolicy#CHECKSUM_POLICY_IGNORE - * @see RepositoryPolicy#CHECKSUM_POLICY_WARN - */ - public DefaultRepositorySystemSession setChecksumPolicy( String checksumPolicy ) - { - failIfReadOnly(); - this.checksumPolicy = checksumPolicy; - return this; - } - - public String getUpdatePolicy() - { - return updatePolicy; - } - - /** - * Sets the global update policy. If set, the global update policy overrides the update policies of the remote - * repositories being used for resolution. - * - * @param updatePolicy The global update policy, may be {@code null}/empty to apply the per-repository policies. - * @return This session for chaining, never {@code null}. - * @see RepositoryPolicy#UPDATE_POLICY_ALWAYS - * @see RepositoryPolicy#UPDATE_POLICY_DAILY - * @see RepositoryPolicy#UPDATE_POLICY_NEVER - */ - public DefaultRepositorySystemSession setUpdatePolicy( String updatePolicy ) - { - failIfReadOnly(); - this.updatePolicy = updatePolicy; - return this; - } - - public LocalRepository getLocalRepository() - { - LocalRepositoryManager lrm = getLocalRepositoryManager(); - return ( lrm != null ) ? lrm.getRepository() : null; - } - - public LocalRepositoryManager getLocalRepositoryManager() - { - return localRepositoryManager; - } - - /** - * Sets the local repository manager used during this session. <em>Note:</em> Eventually, a valid session must have - * a local repository manager set. - * - * @param localRepositoryManager The local repository manager used during this session, may be {@code null}. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setLocalRepositoryManager( LocalRepositoryManager localRepositoryManager ) - { - failIfReadOnly(); - this.localRepositoryManager = localRepositoryManager; - return this; - } - - public WorkspaceReader getWorkspaceReader() - { - return workspaceReader; - } - - /** - * Sets the workspace reader used during this session. If set, the workspace reader will usually be consulted first - * to resolve artifacts. - * - * @param workspaceReader The workspace reader for this session, may be {@code null} if none. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setWorkspaceReader( WorkspaceReader workspaceReader ) - { - failIfReadOnly(); - this.workspaceReader = workspaceReader; - return this; - } - - public RepositoryListener getRepositoryListener() - { - return repositoryListener; - } - - /** - * Sets the listener being notified of actions in the repository system. - * - * @param repositoryListener The repository listener, may be {@code null} if none. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setRepositoryListener( RepositoryListener repositoryListener ) - { - failIfReadOnly(); - this.repositoryListener = repositoryListener; - return this; - } - - public TransferListener getTransferListener() - { - return transferListener; - } - - /** - * Sets the listener being notified of uploads/downloads by the repository system. - * - * @param transferListener The transfer listener, may be {@code null} if none. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setTransferListener( TransferListener transferListener ) - { - failIfReadOnly(); - this.transferListener = transferListener; - return this; - } - - private <T> Map<String, T> copySafe( Map<?, ?> table, Class<T> valueType ) - { - Map<String, T> map; - if ( table == null || table.isEmpty() ) - { - map = new HashMap<String, T>(); - } - else - { - map = new HashMap<String, T>( (int) ( table.size() / 0.75f ) + 1 ); - for ( Map.Entry<?, ?> entry : table.entrySet() ) - { - Object key = entry.getKey(); - if ( key instanceof String ) - { - Object value = entry.getValue(); - if ( valueType.isInstance( value ) ) - { - map.put( key.toString(), valueType.cast( value ) ); - } - } - } - } - return map; - } - - public Map<String, String> getSystemProperties() - { - return systemPropertiesView; - } - - /** - * Sets the system properties to use, e.g. for processing of artifact descriptors. System properties are usually - * collected from the runtime environment like {@link System#getProperties()} and environment variables. - * <p> - * <em>Note:</em> System properties are of type {@code Map<String, String>} and any key-value pair in the input map - * that doesn't match this type will be silently ignored. - * - * @param systemProperties The system properties, may be {@code null} or empty if none. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setSystemProperties( Map<?, ?> systemProperties ) - { - failIfReadOnly(); - this.systemProperties = copySafe( systemProperties, String.class ); - systemPropertiesView = Collections.unmodifiableMap( this.systemProperties ); - return this; - } - - /** - * Sets the specified system property. - * - * @param key The property key, must not be {@code null}. - * @param value The property value, may be {@code null} to remove/unset the property. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setSystemProperty( String key, String value ) - { - failIfReadOnly(); - if ( value != null ) - { - systemProperties.put( key, value ); - } - else - { - systemProperties.remove( key ); - } - return this; - } - - public Map<String, String> getUserProperties() - { - return userPropertiesView; - } - - /** - * Sets the user properties to use, e.g. for processing of artifact descriptors. User properties are similar to - * system properties but are set on the discretion of the user and hence are considered of higher priority than - * system properties in case of conflicts. - * <p> - * <em>Note:</em> User properties are of type {@code Map<String, String>} and any key-value pair in the input map - * that doesn't match this type will be silently ignored. - * - * @param userProperties The user properties, may be {@code null} or empty if none. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setUserProperties( Map<?, ?> userProperties ) - { - failIfReadOnly(); - this.userProperties = copySafe( userProperties, String.class ); - userPropertiesView = Collections.unmodifiableMap( this.userProperties ); - return this; - } - - /** - * Sets the specified user property. - * - * @param key The property key, must not be {@code null}. - * @param value The property value, may be {@code null} to remove/unset the property. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setUserProperty( String key, String value ) - { - failIfReadOnly(); - if ( value != null ) - { - userProperties.put( key, value ); - } - else - { - userProperties.remove( key ); - } - return this; - } - - public Map<String, Object> getConfigProperties() - { - return configPropertiesView; - } - - /** - * Sets the configuration properties used to tweak internal aspects of the repository system (e.g. thread pooling, - * connector-specific behavior, etc.). - * <p> - * <em>Note:</em> Configuration properties are of type {@code Map<String, Object>} and any key-value pair in the - * input map that doesn't match this type will be silently ignored. - * - * @param configProperties The configuration properties, may be {@code null} or empty if none. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setConfigProperties( Map<?, ?> configProperties ) - { - failIfReadOnly(); - this.configProperties = copySafe( configProperties, Object.class ); - configPropertiesView = Collections.unmodifiableMap( this.configProperties ); - return this; - } - - /** - * Sets the specified configuration property. - * - * @param key The property key, must not be {@code null}. - * @param value The property value, may be {@code null} to remove/unset the property. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setConfigProperty( String key, Object value ) - { - failIfReadOnly(); - if ( value != null ) - { - configProperties.put( key, value ); - } - else - { - configProperties.remove( key ); - } - return this; - } - - public MirrorSelector getMirrorSelector() - { - return mirrorSelector; - } - - /** - * Sets the mirror selector to use for repositories discovered in artifact descriptors. Note that this selector is - * not used for remote repositories which are passed as request parameters to the repository system, those - * repositories are supposed to denote the effective repositories. - * - * @param mirrorSelector The mirror selector to use, may be {@code null}. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setMirrorSelector( MirrorSelector mirrorSelector ) - { - failIfReadOnly(); - this.mirrorSelector = mirrorSelector; - if ( this.mirrorSelector == null ) - { - this.mirrorSelector = NullMirrorSelector.INSTANCE; - } - return this; - } - - public ProxySelector getProxySelector() - { - return proxySelector; - } - - /** - * Sets the proxy selector to use for repositories discovered in artifact descriptors. Note that this selector is - * not used for remote repositories which are passed as request parameters to the repository system, those - * repositories are supposed to have their proxy (if any) already set. - * - * @param proxySelector The proxy selector to use, may be {@code null}. - * @return This session for chaining, never {@code null}. - * @see org.eclipse.aether.repository.RemoteRepository#getProxy() - */ - public DefaultRepositorySystemSession setProxySelector( ProxySelector proxySelector ) - { - failIfReadOnly(); - this.proxySelector = proxySelector; - if ( this.proxySelector == null ) - { - this.proxySelector = NullProxySelector.INSTANCE; - } - return this; - } - - public AuthenticationSelector getAuthenticationSelector() - { - return authenticationSelector; - } - - /** - * Sets the authentication selector to use for repositories discovered in artifact descriptors. Note that this - * selector is not used for remote repositories which are passed as request parameters to the repository system, - * those repositories are supposed to have their authentication (if any) already set. - * - * @param authenticationSelector The authentication selector to use, may be {@code null}. - * @return This session for chaining, never {@code null}. - * @see org.eclipse.aether.repository.RemoteRepository#getAuthentication() - */ - public DefaultRepositorySystemSession setAuthenticationSelector( AuthenticationSelector authenticationSelector ) - { - failIfReadOnly(); - this.authenticationSelector = authenticationSelector; - if ( this.authenticationSelector == null ) - { - this.authenticationSelector = NullAuthenticationSelector.INSTANCE; - } - return this; - } - - public ArtifactTypeRegistry getArtifactTypeRegistry() - { - return artifactTypeRegistry; - } - - /** - * Sets the registry of artifact types recognized by this session. - * - * @param artifactTypeRegistry The artifact type registry, may be {@code null}. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setArtifactTypeRegistry( ArtifactTypeRegistry artifactTypeRegistry ) - { - failIfReadOnly(); - this.artifactTypeRegistry = artifactTypeRegistry; - if ( this.artifactTypeRegistry == null ) - { - this.artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE; - } - return this; - } - - public DependencyTraverser getDependencyTraverser() - { - return dependencyTraverser; - } - - /** - * Sets the dependency traverser to use for building dependency graphs. - * - * @param dependencyTraverser The dependency traverser to use for building dependency graphs, may be {@code null}. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setDependencyTraverser( DependencyTraverser dependencyTraverser ) - { - failIfReadOnly(); - this.dependencyTraverser = dependencyTraverser; - return this; - } - - public DependencyManager getDependencyManager() - { - return dependencyManager; - } - - /** - * Sets the dependency manager to use for building dependency graphs. - * - * @param dependencyManager The dependency manager to use for building dependency graphs, may be {@code null}. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setDependencyManager( DependencyManager dependencyManager ) - { - failIfReadOnly(); - this.dependencyManager = dependencyManager; - return this; - } - - public DependencySelector getDependencySelector() - { - return dependencySelector; - } - - /** - * Sets the dependency selector to use for building dependency graphs. - * - * @param dependencySelector The dependency selector to use for building dependency graphs, may be {@code null}. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setDependencySelector( DependencySelector dependencySelector ) - { - failIfReadOnly(); - this.dependencySelector = dependencySelector; - return this; - } - - public VersionFilter getVersionFilter() - { - return versionFilter; - } - - /** - * Sets the version filter to use for building dependency graphs. - * - * @param versionFilter The version filter to use for building dependency graphs, may be {@code null} to not filter - * versions. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setVersionFilter( VersionFilter versionFilter ) - { - failIfReadOnly(); - this.versionFilter = versionFilter; - return this; - } - - public DependencyGraphTransformer getDependencyGraphTransformer() - { - return dependencyGraphTransformer; - } - - /** - * Sets the dependency graph transformer to use for building dependency graphs. - * - * @param dependencyGraphTransformer The dependency graph transformer to use for building dependency graphs, may be - * {@code null}. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setDependencyGraphTransformer( DependencyGraphTransformer dependencyGraphTransformer ) - { - failIfReadOnly(); - this.dependencyGraphTransformer = dependencyGraphTransformer; - return this; - } - - public SessionData getData() - { - return data; - } - - /** - * Sets the custom data associated with this session. - * - * @param data The session data, may be {@code null}. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setData( SessionData data ) - { - failIfReadOnly(); - this.data = data; - if ( this.data == null ) - { - this.data = new DefaultSessionData(); - } - return this; - } - - public RepositoryCache getCache() - { - return cache; - } - - /** - * Sets the cache the repository system may use to save data for future reuse during the session. - * - * @param cache The repository cache, may be {@code null} if none. - * @return This session for chaining, never {@code null}. - */ - public DefaultRepositorySystemSession setCache( RepositoryCache cache ) - { - failIfReadOnly(); - this.cache = cache; - return this; - } - - /** - * Marks this session as read-only such that any future attempts to call its mutators will fail with an exception. - * Marking an already read-only session as read-only has no effect. The session's data and cache remain writable - * though. - */ - public void setReadOnly() - { - readOnly = true; - } - - private void failIfReadOnly() - { - if ( readOnly ) - { - throw new IllegalStateException( "repository system session is read-only" ); - } - } - - static class NullProxySelector - implements ProxySelector - { - - public static final ProxySelector INSTANCE = new NullProxySelector(); - - public Proxy getProxy( RemoteRepository repository ) - { - return repository.getProxy(); - } - - } - - static class NullMirrorSelector - implements MirrorSelector - { - - public static final MirrorSelector INSTANCE = new NullMirrorSelector(); - - public RemoteRepository getMirror( RemoteRepository repository ) - { - return null; - } - - } - - static class NullAuthenticationSelector - implements AuthenticationSelector - { - - public static final AuthenticationSelector INSTANCE = new NullAuthenticationSelector(); - - public Authentication getAuthentication( RemoteRepository repository ) - { - return repository.getAuthentication(); - } - - } - - static final class NullArtifactTypeRegistry - implements ArtifactTypeRegistry - { - - public static final ArtifactTypeRegistry INSTANCE = new NullArtifactTypeRegistry(); - - public ArtifactType get( String typeId ) - { - return null; - } - - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/DefaultSessionData.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/DefaultSessionData.java b/aether-api/src/main/java/org/eclipse/aether/DefaultSessionData.java deleted file mode 100644 index e78df3a..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/DefaultSessionData.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.eclipse.aether; - -/* - * 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. - */ - -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -/** - * A simple session data storage backed by a thread-safe map. - */ -public final class DefaultSessionData - implements SessionData -{ - - private final ConcurrentMap<Object, Object> data; - - public DefaultSessionData() - { - data = new ConcurrentHashMap<Object, Object>(); - } - - public void set( Object key, Object value ) - { - if ( key == null ) - { - throw new IllegalArgumentException( "key must not be null" ); - } - - if ( value != null ) - { - data.put( key, value ); - } - else - { - data.remove( key ); - } - } - - public boolean set( Object key, Object oldValue, Object newValue ) - { - if ( key == null ) - { - throw new IllegalArgumentException( "key must not be null" ); - } - - if ( newValue != null ) - { - if ( oldValue == null ) - { - return data.putIfAbsent( key, newValue ) == null; - } - return data.replace( key, oldValue, newValue ); - } - else - { - if ( oldValue == null ) - { - return !data.containsKey( key ); - } - return data.remove( key, oldValue ); - } - } - - public Object get( Object key ) - { - if ( key == null ) - { - throw new IllegalArgumentException( "key must not be null" ); - } - - return data.get( key ); - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java b/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java deleted file mode 100644 index 6f9f114..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/RepositoryCache.java +++ /dev/null @@ -1,59 +0,0 @@ -package org.eclipse.aether; - -/* - * 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. - */ - -/** - * Caches auxiliary data used during repository access like already processed metadata. The data in the cache is meant - * for exclusive consumption by the repository system and is opaque to the cache implementation. <strong>Note:</strong> - * Actual cache implementations must be thread-safe. - * - * @see RepositorySystemSession#getCache() - */ -public interface RepositoryCache -{ - - /** - * Puts the specified data into the cache. It is entirely up to the cache implementation how long this data will be - * kept before being purged, i.e. callers must not make any assumptions about the lifetime of cached data. - * <p> - * <em>Warning:</em> The cache will directly save the provided reference. If the cached data is mutable, i.e. could - * be modified after being put into the cache, the caller is responsible for creating a copy of the original data - * and store the copy in the cache. - * - * @param session The repository session during which the cache is accessed, must not be {@code null}. - * @param key The key to use for lookup of the data, must not be {@code null}. - * @param data The data to store in the cache, may be {@code null}. - */ - void put( RepositorySystemSession session, Object key, Object data ); - - /** - * Gets the specified data from the cache. - * <p> - * <em>Warning:</em> The cache will directly return the saved reference. If the cached data is to be modified after - * its retrieval, the caller is responsible to create a copy of the returned data and use this instead of the cache - * record. - * - * @param session The repository session during which the cache is accessed, must not be {@code null}. - * @param key The key to use for lookup of the data, must not be {@code null}. - * @return The requested data or {@code null} if none was present in the cache. - */ - Object get( RepositorySystemSession session, Object key ); - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/RepositoryEvent.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositoryEvent.java b/aether-api/src/main/java/org/eclipse/aether/RepositoryEvent.java deleted file mode 100644 index 33816ba..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/RepositoryEvent.java +++ /dev/null @@ -1,442 +0,0 @@ -package org.eclipse.aether; - -/* - * 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. - */ - -import java.io.File; -import java.util.Collections; -import java.util.List; - -import org.eclipse.aether.artifact.Artifact; -import org.eclipse.aether.metadata.Metadata; -import org.eclipse.aether.repository.ArtifactRepository; - -/** - * An event describing an action performed by the repository system. Note that events which indicate the end of an - * action like {@link EventType#ARTIFACT_RESOLVED} are generally fired in both the success and the failure case. Use - * {@link #getException()} to check whether an event denotes success or failure. - * - * @see RepositoryListener - * @see RepositoryEvent.Builder - */ -public final class RepositoryEvent -{ - - /** - * The type of the repository event. - */ - public enum EventType - { - - /** - * @see RepositoryListener#artifactDescriptorInvalid(RepositoryEvent) - */ - ARTIFACT_DESCRIPTOR_INVALID, - - /** - * @see RepositoryListener#artifactDescriptorMissing(RepositoryEvent) - */ - ARTIFACT_DESCRIPTOR_MISSING, - - /** - * @see RepositoryListener#metadataInvalid(RepositoryEvent) - */ - METADATA_INVALID, - - /** - * @see RepositoryListener#artifactResolving(RepositoryEvent) - */ - ARTIFACT_RESOLVING, - - /** - * @see RepositoryListener#artifactResolved(RepositoryEvent) - */ - ARTIFACT_RESOLVED, - - /** - * @see RepositoryListener#metadataResolving(RepositoryEvent) - */ - METADATA_RESOLVING, - - /** - * @see RepositoryListener#metadataResolved(RepositoryEvent) - */ - METADATA_RESOLVED, - - /** - * @see RepositoryListener#artifactDownloading(RepositoryEvent) - */ - ARTIFACT_DOWNLOADING, - - /** - * @see RepositoryListener#artifactDownloaded(RepositoryEvent) - */ - ARTIFACT_DOWNLOADED, - - /** - * @see RepositoryListener#metadataDownloading(RepositoryEvent) - */ - METADATA_DOWNLOADING, - - /** - * @see RepositoryListener#metadataDownloaded(RepositoryEvent) - */ - METADATA_DOWNLOADED, - - /** - * @see RepositoryListener#artifactInstalling(RepositoryEvent) - */ - ARTIFACT_INSTALLING, - - /** - * @see RepositoryListener#artifactInstalled(RepositoryEvent) - */ - ARTIFACT_INSTALLED, - - /** - * @see RepositoryListener#metadataInstalling(RepositoryEvent) - */ - METADATA_INSTALLING, - - /** - * @see RepositoryListener#metadataInstalled(RepositoryEvent) - */ - METADATA_INSTALLED, - - /** - * @see RepositoryListener#artifactDeploying(RepositoryEvent) - */ - ARTIFACT_DEPLOYING, - - /** - * @see RepositoryListener#artifactDeployed(RepositoryEvent) - */ - ARTIFACT_DEPLOYED, - - /** - * @see RepositoryListener#metadataDeploying(RepositoryEvent) - */ - METADATA_DEPLOYING, - - /** - * @see RepositoryListener#metadataDeployed(RepositoryEvent) - */ - METADATA_DEPLOYED - - } - - private final EventType type; - - private final RepositorySystemSession session; - - private final Artifact artifact; - - private final Metadata metadata; - - private final ArtifactRepository repository; - - private final File file; - - private final List<Exception> exceptions; - - private final RequestTrace trace; - - RepositoryEvent( Builder builder ) - { - type = builder.type; - session = builder.session; - artifact = builder.artifact; - metadata = builder.metadata; - repository = builder.repository; - file = builder.file; - exceptions = builder.exceptions; - trace = builder.trace; - } - - /** - * Gets the type of the event. - * - * @return The type of the event, never {@code null}. - */ - public EventType getType() - { - return type; - } - - /** - * Gets the repository system session during which the event occurred. - * - * @return The repository system session during which the event occurred, never {@code null}. - */ - public RepositorySystemSession getSession() - { - return session; - } - - /** - * Gets the artifact involved in the event (if any). - * - * @return The involved artifact or {@code null} if none. - */ - public Artifact getArtifact() - { - return artifact; - } - - /** - * Gets the metadata involved in the event (if any). - * - * @return The involved metadata or {@code null} if none. - */ - public Metadata getMetadata() - { - return metadata; - } - - /** - * Gets the file involved in the event (if any). - * - * @return The involved file or {@code null} if none. - */ - public File getFile() - { - return file; - } - - /** - * Gets the repository involved in the event (if any). - * - * @return The involved repository or {@code null} if none. - */ - public ArtifactRepository getRepository() - { - return repository; - } - - /** - * Gets the exception that caused the event (if any). As a rule of thumb, an event accompanied by an exception - * indicates a failure of the corresponding action. If multiple exceptions occurred, this method returns the first - * exception. - * - * @return The exception or {@code null} if none. - */ - public Exception getException() - { - return exceptions.isEmpty() ? null : exceptions.get( 0 ); - } - - /** - * Gets the exceptions that caused the event (if any). As a rule of thumb, an event accompanied by exceptions - * indicates a failure of the corresponding action. - * - * @return The exceptions, never {@code null}. - */ - public List<Exception> getExceptions() - { - return exceptions; - } - - /** - * Gets the trace information about the request during which the event occurred. - * - * @return The trace information or {@code null} if none. - */ - public RequestTrace getTrace() - { - return trace; - } - - @Override - public String toString() - { - StringBuilder buffer = new StringBuilder( 256 ); - buffer.append( getType() ); - if ( getArtifact() != null ) - { - buffer.append( " " ).append( getArtifact() ); - } - if ( getMetadata() != null ) - { - buffer.append( " " ).append( getMetadata() ); - } - if ( getFile() != null ) - { - buffer.append( " (" ).append( getFile() ).append( ")" ); - } - if ( getRepository() != null ) - { - buffer.append( " @ " ).append( getRepository() ); - } - return buffer.toString(); - } - - /** - * A builder to create events. - */ - public static final class Builder - { - - EventType type; - - RepositorySystemSession session; - - Artifact artifact; - - Metadata metadata; - - ArtifactRepository repository; - - File file; - - List<Exception> exceptions = Collections.emptyList(); - - RequestTrace trace; - - /** - * Creates a new event builder for the specified session and event type. - * - * @param session The repository system session, must not be {@code null}. - * @param type The type of the event, must not be {@code null}. - */ - public Builder( RepositorySystemSession session, EventType type ) - { - if ( session == null ) - { - throw new IllegalArgumentException( "session not specified" ); - } - this.session = session; - if ( type == null ) - { - throw new IllegalArgumentException( "event type not specified" ); - } - this.type = type; - } - - /** - * Sets the artifact involved in the event. - * - * @param artifact The involved artifact, may be {@code null}. - * @return This event builder for chaining, never {@code null}. - */ - public Builder setArtifact( Artifact artifact ) - { - this.artifact = artifact; - return this; - } - - /** - * Sets the metadata involved in the event. - * - * @param metadata The involved metadata, may be {@code null}. - * @return This event builder for chaining, never {@code null}. - */ - public Builder setMetadata( Metadata metadata ) - { - this.metadata = metadata; - return this; - } - - /** - * Sets the repository involved in the event. - * - * @param repository The involved repository, may be {@code null}. - * @return This event builder for chaining, never {@code null}. - */ - public Builder setRepository( ArtifactRepository repository ) - { - this.repository = repository; - return this; - } - - /** - * Sets the file involved in the event. - * - * @param file The involved file, may be {@code null}. - * @return This event builder for chaining, never {@code null}. - */ - public Builder setFile( File file ) - { - this.file = file; - return this; - } - - /** - * Sets the exception causing the event. - * - * @param exception The exception causing the event, may be {@code null}. - * @return This event builder for chaining, never {@code null}. - */ - public Builder setException( Exception exception ) - { - if ( exception != null ) - { - this.exceptions = Collections.singletonList( exception ); - } - else - { - this.exceptions = Collections.emptyList(); - } - return this; - } - - /** - * Sets the exceptions causing the event. - * - * @param exceptions The exceptions causing the event, may be {@code null}. - * @return This event builder for chaining, never {@code null}. - */ - public Builder setExceptions( List<Exception> exceptions ) - { - if ( exceptions != null ) - { - this.exceptions = exceptions; - } - else - { - this.exceptions = Collections.emptyList(); - } - return this; - } - - /** - * Sets the trace information about the request during which the event occurred. - * - * @param trace The trace information, may be {@code null}. - * @return This event builder for chaining, never {@code null}. - */ - public Builder setTrace( RequestTrace trace ) - { - this.trace = trace; - return this; - } - - /** - * Builds a new event from the current values of this builder. The state of the builder itself remains - * unchanged. - * - * @return The event, never {@code null}. - */ - public RepositoryEvent build() - { - return new RepositoryEvent( this ); - } - - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/RepositoryException.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositoryException.java b/aether-api/src/main/java/org/eclipse/aether/RepositoryException.java deleted file mode 100644 index c2d1718..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/RepositoryException.java +++ /dev/null @@ -1,69 +0,0 @@ -package org.eclipse.aether; - -/* - * 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. - */ - -/** - * The base class for exceptions thrown by the repository system. <em>Note:</em> Unless otherwise noted, instances of - * this class and its subclasses will not persist fields carrying extended error information during serialization. - */ -public class RepositoryException - extends Exception -{ - - /** - * Creates a new exception with the specified detail message. - * - * @param message The detail message, may be {@code null}. - */ - public RepositoryException( String message ) - { - super( message ); - } - - /** - * Creates a new exception with the specified detail message and cause. - * - * @param message The detail message, may be {@code null}. - * @param cause The exception that caused this one, may be {@code null}. - */ - public RepositoryException( String message, Throwable cause ) - { - super( message, cause ); - } - - /** - * @noreference This method is not intended to be used by clients. - */ - protected static String getMessage( String prefix, Throwable cause ) - { - String msg = ""; - if ( cause != null ) - { - msg = cause.getMessage(); - if ( msg == null || msg.length() <= 0 ) - { - msg = cause.getClass().getSimpleName(); - } - msg = prefix + msg; - } - return msg; - } - -} http://git-wip-us.apache.org/repos/asf/maven-resolver/blob/3a1b8ae0/aether-api/src/main/java/org/eclipse/aether/RepositoryListener.java ---------------------------------------------------------------------- diff --git a/aether-api/src/main/java/org/eclipse/aether/RepositoryListener.java b/aether-api/src/main/java/org/eclipse/aether/RepositoryListener.java deleted file mode 100644 index d654630..0000000 --- a/aether-api/src/main/java/org/eclipse/aether/RepositoryListener.java +++ /dev/null @@ -1,222 +0,0 @@ -package org.eclipse.aether; - -/* - * 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. - */ - -/** - * A listener being notified of events from the repository system. In general, the system sends events upon termination - * of an operation like {@link #artifactResolved(RepositoryEvent)} regardless whether it succeeded or failed so - * listeners need to inspect the event details carefully. Also, the listener may be called from an arbitrary thread. - * <em>Note:</em> Implementors are strongly advised to inherit from {@link AbstractRepositoryListener} instead of - * directly implementing this interface. - * - * @see org.eclipse.aether.RepositorySystemSession#getRepositoryListener() - * @see org.eclipse.aether.transfer.TransferListener - * @noimplement This interface is not intended to be implemented by clients. - * @noextend This interface is not intended to be extended by clients. - */ -public interface RepositoryListener -{ - - /** - * Notifies the listener of a syntactically or semantically invalid artifact descriptor. - * {@link RepositoryEvent#getArtifact()} indicates the artifact whose descriptor is invalid and - * {@link RepositoryEvent#getExceptions()} carries the encountered errors. Depending on the session's - * {@link org.eclipse.aether.resolution.ArtifactDescriptorPolicy}, the underlying repository operation might abort - * with an exception or ignore the invalid descriptor. - * - * @param event The event details, must not be {@code null}. - */ - void artifactDescriptorInvalid( RepositoryEvent event ); - - /** - * Notifies the listener of a missing artifact descriptor. {@link RepositoryEvent#getArtifact()} indicates the - * artifact whose descriptor is missing. Depending on the session's - * {@link org.eclipse.aether.resolution.ArtifactDescriptorPolicy}, the underlying repository operation might abort - * with an exception or ignore the missing descriptor. - * - * @param event The event details, must not be {@code null}. - */ - void artifactDescriptorMissing( RepositoryEvent event ); - - /** - * Notifies the listener of syntactically or semantically invalid metadata. {@link RepositoryEvent#getMetadata()} - * indicates the invalid metadata and {@link RepositoryEvent#getExceptions()} carries the encountered errors. The - * underlying repository operation might still succeed, depending on whether the metadata in question is actually - * needed to carry out the resolution process. - * - * @param event The event details, must not be {@code null}. - */ - void metadataInvalid( RepositoryEvent event ); - - /** - * Notifies the listener of an artifact that is about to be resolved. {@link RepositoryEvent#getArtifact()} denotes - * the artifact in question. Unlike the {@link #artifactDownloading(RepositoryEvent)} event, this event is fired - * regardless whether the artifact already exists locally or not. - * - * @param event The event details, must not be {@code null}. - */ - void artifactResolving( RepositoryEvent event ); - - /** - * Notifies the listener of an artifact whose resolution has been completed, either successfully or not. - * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and - * {@link RepositoryEvent#getExceptions()} indicates whether the resolution succeeded or failed. Unlike the - * {@link #artifactDownloaded(RepositoryEvent)} event, this event is fired regardless whether the artifact already - * exists locally or not. - * - * @param event The event details, must not be {@code null}. - */ - void artifactResolved( RepositoryEvent event ); - - /** - * Notifies the listener of some metadata that is about to be resolved. {@link RepositoryEvent#getMetadata()} - * denotes the metadata in question. Unlike the {@link #metadataDownloading(RepositoryEvent)} event, this event is - * fired regardless whether the metadata already exists locally or not. - * - * @param event The event details, must not be {@code null}. - */ - void metadataResolving( RepositoryEvent event ); - - /** - * Notifies the listener of some metadata whose resolution has been completed, either successfully or not. - * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and - * {@link RepositoryEvent#getExceptions()} indicates whether the resolution succeeded or failed. Unlike the - * {@link #metadataDownloaded(RepositoryEvent)} event, this event is fired regardless whether the metadata already - * exists locally or not. - * - * @param event The event details, must not be {@code null}. - */ - void metadataResolved( RepositoryEvent event ); - - /** - * Notifies the listener of an artifact that is about to be downloaded from a remote repository. - * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and - * {@link RepositoryEvent#getRepository()} the source repository. Unlike the - * {@link #artifactResolving(RepositoryEvent)} event, this event is only fired when the artifact does not already - * exist locally. - * - * @param event The event details, must not be {@code null}. - */ - void artifactDownloading( RepositoryEvent event ); - - /** - * Notifies the listener of an artifact whose download has been completed, either successfully or not. - * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and - * {@link RepositoryEvent#getExceptions()} indicates whether the download succeeded or failed. Unlike the - * {@link #artifactResolved(RepositoryEvent)} event, this event is only fired when the artifact does not already - * exist locally. - * - * @param event The event details, must not be {@code null}. - */ - void artifactDownloaded( RepositoryEvent event ); - - /** - * Notifies the listener of some metadata that is about to be downloaded from a remote repository. - * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and - * {@link RepositoryEvent#getRepository()} the source repository. Unlike the - * {@link #metadataResolving(RepositoryEvent)} event, this event is only fired when the metadata does not already - * exist locally. - * - * @param event The event details, must not be {@code null}. - */ - void metadataDownloading( RepositoryEvent event ); - - /** - * Notifies the listener of some metadata whose download has been completed, either successfully or not. - * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and - * {@link RepositoryEvent#getExceptions()} indicates whether the download succeeded or failed. Unlike the - * {@link #metadataResolved(RepositoryEvent)} event, this event is only fired when the metadata does not already - * exist locally. - * - * @param event The event details, must not be {@code null}. - */ - void metadataDownloaded( RepositoryEvent event ); - - /** - * Notifies the listener of an artifact that is about to be installed to the local repository. - * {@link RepositoryEvent#getArtifact()} denotes the artifact in question. - * - * @param event The event details, must not be {@code null}. - */ - void artifactInstalling( RepositoryEvent event ); - - /** - * Notifies the listener of an artifact whose installation to the local repository has been completed, either - * successfully or not. {@link RepositoryEvent#getArtifact()} denotes the artifact in question and - * {@link RepositoryEvent#getExceptions()} indicates whether the installation succeeded or failed. - * - * @param event The event details, must not be {@code null}. - */ - void artifactInstalled( RepositoryEvent event ); - - /** - * Notifies the listener of some metadata that is about to be installed to the local repository. - * {@link RepositoryEvent#getMetadata()} denotes the metadata in question. - * - * @param event The event details, must not be {@code null}. - */ - void metadataInstalling( RepositoryEvent event ); - - /** - * Notifies the listener of some metadata whose installation to the local repository has been completed, either - * successfully or not. {@link RepositoryEvent#getMetadata()} denotes the metadata in question and - * {@link RepositoryEvent#getExceptions()} indicates whether the installation succeeded or failed. - * - * @param event The event details, must not be {@code null}. - */ - void metadataInstalled( RepositoryEvent event ); - - /** - * Notifies the listener of an artifact that is about to be uploaded to a remote repository. - * {@link RepositoryEvent#getArtifact()} denotes the artifact in question and - * {@link RepositoryEvent#getRepository()} the destination repository. - * - * @param event The event details, must not be {@code null}. - */ - void artifactDeploying( RepositoryEvent event ); - - /** - * Notifies the listener of an artifact whose upload to a remote repository has been completed, either successfully - * or not. {@link RepositoryEvent#getArtifact()} denotes the artifact in question and - * {@link RepositoryEvent#getExceptions()} indicates whether the upload succeeded or failed. - * - * @param event The event details, must not be {@code null}. - */ - void artifactDeployed( RepositoryEvent event ); - - /** - * Notifies the listener of some metadata that is about to be uploaded to a remote repository. - * {@link RepositoryEvent#getMetadata()} denotes the metadata in question and - * {@link RepositoryEvent#getRepository()} the destination repository. - * - * @param event The event details, must not be {@code null}. - */ - void metadataDeploying( RepositoryEvent event ); - - /** - * Notifies the listener of some metadata whose upload to a remote repository has been completed, either - * successfully or not. {@link RepositoryEvent#getMetadata()} denotes the metadata in question and - * {@link RepositoryEvent#getExceptions()} indicates whether the upload succeeded or failed. - * - * @param event The event details, must not be {@code null}. - */ - void metadataDeployed( RepositoryEvent event ); - -}