001 package org.apache.maven.plugin.prefix;
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.Collections;
023 import java.util.List;
024
025 import org.apache.maven.execution.MavenSession;
026 import org.apache.maven.model.Model;
027 import org.apache.maven.project.MavenProject;
028 import org.sonatype.aether.RepositorySystemSession;
029 import org.sonatype.aether.repository.RemoteRepository;
030
031 /**
032 * Collects settings required to resolve a plugin prefix.
033 *
034 * @since 3.0
035 * @author Benjamin Bentmann
036 */
037 public class DefaultPluginPrefixRequest
038 implements PluginPrefixRequest
039 {
040
041 private String prefix;
042
043 private List<String> pluginGroups = Collections.emptyList();
044
045 private Model pom;
046
047 private List<RemoteRepository> repositories = Collections.emptyList();
048
049 private RepositorySystemSession session;
050
051 /**
052 * Creates an empty request.
053 */
054 public DefaultPluginPrefixRequest()
055 {
056 }
057
058 /**
059 * Creates a request for the specified plugin prefix and build session. The provided build session will be used to
060 * configure repository settings. If the session has a current project, its plugin repositories and model will be
061 * used as well.
062 *
063 * @param prefix The plugin prefix to resolve, must not be {@code null}.
064 * @param session The build session from which to derive further settings, must not be {@code null}.
065 */
066 public DefaultPluginPrefixRequest( String prefix, MavenSession session )
067 {
068 setPrefix( prefix );
069
070 setRepositorySession( session.getRepositorySession() );
071
072 MavenProject project = session.getCurrentProject();
073 if ( project != null )
074 {
075 setRepositories( project.getRemotePluginRepositories() );
076 setPom( project.getModel() );
077 }
078
079 setPluginGroups( session.getPluginGroups() );
080 }
081
082 public String getPrefix()
083 {
084 return prefix;
085 }
086
087 public DefaultPluginPrefixRequest setPrefix( String prefix )
088 {
089 this.prefix = prefix;
090
091 return this;
092 }
093
094 public List<String> getPluginGroups()
095 {
096 return pluginGroups;
097 }
098
099 public DefaultPluginPrefixRequest setPluginGroups( List<String> pluginGroups )
100 {
101 if ( pluginGroups != null )
102 {
103 this.pluginGroups = pluginGroups;
104 }
105 else
106 {
107 this.pluginGroups = Collections.emptyList();
108 }
109
110 return this;
111 }
112
113 public Model getPom()
114 {
115 return pom;
116 }
117
118 public DefaultPluginPrefixRequest setPom( Model pom )
119 {
120 this.pom = pom;
121
122 return this;
123 }
124
125 public List<RemoteRepository> getRepositories()
126 {
127 return repositories;
128 }
129
130 public DefaultPluginPrefixRequest setRepositories( List<RemoteRepository> repositories )
131 {
132 if ( repositories != null )
133 {
134 this.repositories = repositories;
135 }
136 else
137 {
138 this.repositories = Collections.emptyList();
139 }
140
141 return this;
142 }
143
144 public RepositorySystemSession getRepositorySession()
145 {
146 return session;
147 }
148
149 public DefaultPluginPrefixRequest setRepositorySession( RepositorySystemSession session )
150 {
151 this.session = session;
152
153 return this;
154 }
155
156 }