001package org.eclipse.aether;
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
022import java.util.Map;
023
024import org.eclipse.aether.artifact.ArtifactTypeRegistry;
025import org.eclipse.aether.collection.DependencyGraphTransformer;
026import org.eclipse.aether.collection.DependencyManager;
027import org.eclipse.aether.collection.DependencySelector;
028import org.eclipse.aether.collection.DependencyTraverser;
029import org.eclipse.aether.collection.VersionFilter;
030import org.eclipse.aether.repository.AuthenticationSelector;
031import org.eclipse.aether.repository.LocalRepository;
032import org.eclipse.aether.repository.LocalRepositoryManager;
033import org.eclipse.aether.repository.MirrorSelector;
034import org.eclipse.aether.repository.ProxySelector;
035import org.eclipse.aether.repository.WorkspaceReader;
036import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
037import org.eclipse.aether.resolution.ResolutionErrorPolicy;
038import org.eclipse.aether.transfer.TransferListener;
039import org.eclipse.aether.transform.FileTransformerManager;
040
041/**
042 * A special repository system session to enable decorating or proxying another session. To do so, clients have to
043 * create a subclass and implement {@link #getSession()}.
044 */
045public abstract class AbstractForwardingRepositorySystemSession
046    implements RepositorySystemSession
047{
048
049    /**
050     * Creates a new forwarding session.
051     */
052    protected AbstractForwardingRepositorySystemSession()
053    {
054    }
055
056    /**
057     * Gets the repository system session to which this instance forwards calls. It's worth noting that this class does
058     * not save/cache the returned reference but queries this method before each forwarding. Hence, the session
059     * forwarded to may change over time or depending on the context (e.g. calling thread).
060     * 
061     * @return The repository system session to forward calls to, never {@code null}.
062     */
063    protected abstract RepositorySystemSession getSession();
064
065    @Override
066    public boolean isOffline()
067    {
068        return getSession().isOffline();
069    }
070
071    @Override
072    public boolean isIgnoreArtifactDescriptorRepositories()
073    {
074        return getSession().isIgnoreArtifactDescriptorRepositories();
075    }
076
077    @Override
078    public ResolutionErrorPolicy getResolutionErrorPolicy()
079    {
080        return getSession().getResolutionErrorPolicy();
081    }
082
083    @Override
084    public ArtifactDescriptorPolicy getArtifactDescriptorPolicy()
085    {
086        return getSession().getArtifactDescriptorPolicy();
087    }
088
089    @Override
090    public String getChecksumPolicy()
091    {
092        return getSession().getChecksumPolicy();
093    }
094
095    @Override
096    public String getUpdatePolicy()
097    {
098        return getSession().getUpdatePolicy();
099    }
100
101    @Override
102    public LocalRepository getLocalRepository()
103    {
104        return getSession().getLocalRepository();
105    }
106
107    @Override
108    public LocalRepositoryManager getLocalRepositoryManager()
109    {
110        return getSession().getLocalRepositoryManager();
111    }
112
113    @Override
114    public WorkspaceReader getWorkspaceReader()
115    {
116        return getSession().getWorkspaceReader();
117    }
118
119    @Override
120    public RepositoryListener getRepositoryListener()
121    {
122        return getSession().getRepositoryListener();
123    }
124
125    @Override
126    public TransferListener getTransferListener()
127    {
128        return getSession().getTransferListener();
129    }
130
131    @Override
132    public Map<String, String> getSystemProperties()
133    {
134        return getSession().getSystemProperties();
135    }
136
137    @Override
138    public Map<String, String> getUserProperties()
139    {
140        return getSession().getUserProperties();
141    }
142
143    @Override
144    public Map<String, Object> getConfigProperties()
145    {
146        return getSession().getConfigProperties();
147    }
148
149    @Override
150    public MirrorSelector getMirrorSelector()
151    {
152        return getSession().getMirrorSelector();
153    }
154
155    @Override
156    public ProxySelector getProxySelector()
157    {
158        return getSession().getProxySelector();
159    }
160
161    @Override
162    public AuthenticationSelector getAuthenticationSelector()
163    {
164        return getSession().getAuthenticationSelector();
165    }
166
167    @Override
168    public ArtifactTypeRegistry getArtifactTypeRegistry()
169    {
170        return getSession().getArtifactTypeRegistry();
171    }
172
173    @Override
174    public DependencyTraverser getDependencyTraverser()
175    {
176        return getSession().getDependencyTraverser();
177    }
178
179    @Override
180    public DependencyManager getDependencyManager()
181    {
182        return getSession().getDependencyManager();
183    }
184
185    @Override
186    public DependencySelector getDependencySelector()
187    {
188        return getSession().getDependencySelector();
189    }
190
191    @Override
192    public VersionFilter getVersionFilter()
193    {
194        return getSession().getVersionFilter();
195    }
196
197    @Override
198    public DependencyGraphTransformer getDependencyGraphTransformer()
199    {
200        return getSession().getDependencyGraphTransformer();
201    }
202
203    @Override
204    public SessionData getData()
205    {
206        return getSession().getData();
207    }
208
209    @Override
210    public RepositoryCache getCache()
211    {
212        return getSession().getCache();
213    }
214    
215    @Override
216    public FileTransformerManager getFileTransformerManager()
217    {
218        return getSession().getFileTransformerManager();
219    }
220
221}