1 package org.eclipse.aether.transport.http;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.LinkedList;
23
24 import org.apache.http.auth.AuthScheme;
25 import org.apache.http.client.params.AuthPolicy;
26 import org.apache.http.impl.auth.BasicScheme;
27
28
29
30
31 final class AuthSchemePool
32 {
33
34 private final LinkedList<AuthScheme> authSchemes;
35
36 private String schemeName;
37
38 AuthSchemePool()
39 {
40 authSchemes = new LinkedList<AuthScheme>();
41 }
42
43 public synchronized AuthScheme get()
44 {
45 AuthScheme authScheme = null;
46 if ( !authSchemes.isEmpty() )
47 {
48 authScheme = authSchemes.removeLast();
49 }
50 else if ( AuthPolicy.BASIC.equalsIgnoreCase( schemeName ) )
51 {
52 authScheme = new BasicScheme();
53 }
54 return authScheme;
55 }
56
57 public synchronized void put( AuthScheme authScheme )
58 {
59 if ( authScheme == null )
60 {
61 return;
62 }
63 if ( !authScheme.getSchemeName().equals( schemeName ) )
64 {
65 schemeName = authScheme.getSchemeName();
66 authSchemes.clear();
67 }
68 authSchemes.add( authScheme );
69 }
70
71 }