001 package org.apache.maven.artifact.repository;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import java.util.ArrayList;
023 import java.util.List;
024
025 import org.apache.maven.execution.MavenSession;
026 import org.apache.maven.project.MavenProject;
027
028 /**
029 * Collects basic settings to access the repository system.
030 *
031 * @author Benjamin Bentmann
032 */
033 public class DefaultRepositoryRequest
034 implements RepositoryRequest
035 {
036
037 private boolean offline;
038
039 private boolean forceUpdate;
040
041 private ArtifactRepository localRepository;
042
043 private List<ArtifactRepository> remoteRepositories;
044
045 /**
046 * Creates an empty repository request.
047 */
048 public DefaultRepositoryRequest()
049 {
050 // enables no-arg constructor
051 }
052
053 /**
054 * Creates a shallow copy of the specified repository request.
055 *
056 * @param repositoryRequest The repository request to copy from, must not be {@code null}.
057 */
058 public DefaultRepositoryRequest( RepositoryRequest repositoryRequest )
059 {
060 setLocalRepository( repositoryRequest.getLocalRepository() );
061 setRemoteRepositories( repositoryRequest.getRemoteRepositories() );
062 setOffline( repositoryRequest.isOffline() );
063 setForceUpdate( repositoryRequest.isForceUpdate() );
064 }
065
066 public static RepositoryRequest getRepositoryRequest( MavenSession session, MavenProject project )
067 {
068 RepositoryRequest request = new DefaultRepositoryRequest();
069
070 request.setLocalRepository( session.getLocalRepository() );
071 if ( project != null )
072 {
073 request.setRemoteRepositories( project.getPluginArtifactRepositories() );
074 }
075 request.setOffline( session.isOffline() );
076 request.setForceUpdate( session.getRequest().isUpdateSnapshots() );
077
078 return request;
079 }
080
081 public boolean isOffline()
082 {
083 return offline;
084 }
085
086 public DefaultRepositoryRequest setOffline( boolean offline )
087 {
088 this.offline = offline;
089
090 return this;
091 }
092
093 public boolean isForceUpdate()
094 {
095 return forceUpdate;
096 }
097
098 public DefaultRepositoryRequest setForceUpdate( boolean forceUpdate )
099 {
100 this.forceUpdate = forceUpdate;
101
102 return this;
103 }
104
105 public ArtifactRepository getLocalRepository()
106 {
107 return localRepository;
108 }
109
110 public DefaultRepositoryRequest setLocalRepository( ArtifactRepository localRepository )
111 {
112 this.localRepository = localRepository;
113
114 return this;
115 }
116
117 public List<ArtifactRepository> getRemoteRepositories()
118 {
119 if ( remoteRepositories == null )
120 {
121 remoteRepositories = new ArrayList<ArtifactRepository>();
122 }
123
124 return remoteRepositories;
125 }
126
127 public DefaultRepositoryRequest setRemoteRepositories( List<ArtifactRepository> remoteRepositories )
128 {
129 this.remoteRepositories = remoteRepositories;
130
131 return this;
132 }
133
134 }