001    package org.apache.maven.settings.crypto;
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.Arrays;
024    import java.util.List;
025    
026    import org.apache.maven.settings.Proxy;
027    import org.apache.maven.settings.Server;
028    import org.apache.maven.settings.Settings;
029    
030    /**
031     * Collects parameters that control the decryption of settings.
032     * 
033     * @author Benjamin Bentmann
034     */
035    public class DefaultSettingsDecryptionRequest
036        implements SettingsDecryptionRequest
037    {
038    
039        private List<Server> servers;
040    
041        private List<Proxy> proxies;
042    
043        /**
044         * Creates an empty request.
045         */
046        public DefaultSettingsDecryptionRequest()
047        {
048            // does nothing
049        }
050    
051        /**
052         * Creates a new request to decrypt the specified settings.
053         * 
054         * @param settings The settings to decrypt, must not be {@code null}.
055         */
056        public DefaultSettingsDecryptionRequest( Settings settings )
057        {
058            setServers( settings.getServers() );
059            setProxies( settings.getProxies() );
060        }
061    
062        /**
063         * Creates a new request to decrypt the specified server.
064         * 
065         * @param server The server to decrypt, must not be {@code null}.
066         */
067        public DefaultSettingsDecryptionRequest( Server server )
068        {
069            this.servers = new ArrayList<Server>( Arrays.asList( server ) );
070        }
071    
072        /**
073         * Creates a new request to decrypt the specified proxy.
074         * 
075         * @param proxy The proxy to decrypt, must not be {@code null}.
076         */
077        public DefaultSettingsDecryptionRequest( Proxy proxy )
078        {
079            this.proxies = new ArrayList<Proxy>( Arrays.asList( proxy ) );
080        }
081    
082        public List<Server> getServers()
083        {
084            if ( servers == null )
085            {
086                servers = new ArrayList<Server>();
087            }
088    
089            return servers;
090        }
091    
092        public DefaultSettingsDecryptionRequest setServers( List<Server> servers )
093        {
094            this.servers = servers;
095    
096            return this;
097        }
098    
099        public List<Proxy> getProxies()
100        {
101            if ( proxies == null )
102            {
103                proxies = new ArrayList<Proxy>();
104            }
105    
106            return proxies;
107        }
108    
109        public DefaultSettingsDecryptionRequest setProxies( List<Proxy> proxies )
110        {
111            this.proxies = proxies;
112    
113            return this;
114        }
115    
116    }