]> source.dussan.org Git - archiva.git/blob
6db38644570cb36ce7874b23b5103f557825d32b
[archiva.git] /
1 package org.apache.archiva.redback.keys.memory;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.archiva.redback.keys.AbstractKeyManager;
23 import org.apache.archiva.redback.keys.AuthenticationKey;
24 import org.apache.archiva.redback.keys.KeyManagerException;
25 import org.apache.archiva.redback.keys.KeyNotFoundException;
26 import org.apache.archiva.redback.keys.memory.MemoryAuthenticationKey;
27 import org.codehaus.plexus.util.StringUtils;
28 import org.springframework.stereotype.Service;
29
30 import java.util.ArrayList;
31 import java.util.Calendar;
32 import java.util.Date;
33 import java.util.HashMap;
34 import java.util.List;
35 import java.util.Map;
36
37 /**
38  * KeyManager backed by an in-memory only store.
39  *
40  * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
41  * @version $Id$
42  */
43 @Service("keyManager#memory")
44 public class MemoryKeyManager
45     extends AbstractKeyManager
46 {
47     private Map<String, AuthenticationKey> keys = new HashMap<String, AuthenticationKey>();
48
49     public AuthenticationKey createKey( String principal, String purpose, int expirationMinutes )
50         throws KeyManagerException
51     {
52         AuthenticationKey key = new MemoryAuthenticationKey();
53         key.setKey( super.generateUUID() );
54         key.setForPrincipal( principal );
55         key.setPurpose( purpose );
56         key.setDateCreated( new Date() );
57
58         if ( expirationMinutes >= 0 )
59         {
60             Calendar expiration = Calendar.getInstance();
61             expiration.add( Calendar.MINUTE, expirationMinutes );
62             key.setDateExpires( expiration.getTime() );
63         }
64
65         keys.put( key.getKey(), key );
66
67         return key;
68     }
69
70     public AuthenticationKey findKey( String key )
71         throws KeyNotFoundException, KeyManagerException
72     {
73         if ( StringUtils.isEmpty( key ) )
74         {
75             throw new KeyNotFoundException( "Empty key not found." );
76         }
77
78         AuthenticationKey authkey = keys.get( key );
79
80         if ( authkey == null )
81         {
82             throw new KeyNotFoundException( "Key [" + key + "] not found." );
83         }
84
85         assertNotExpired( authkey );
86
87         return authkey;
88     }
89
90     public void deleteKey( AuthenticationKey authkey )
91         throws KeyManagerException
92     {
93         keys.remove( authkey );
94     }
95
96     public void deleteKey( String key )
97         throws KeyManagerException
98     {
99         AuthenticationKey authkey = keys.get( key );
100         if ( authkey != null )
101         {
102             keys.remove( authkey );
103         }
104     }
105
106     public List<AuthenticationKey> getAllKeys()
107     {
108         return new ArrayList<AuthenticationKey>( keys.values() );
109     }
110
111     public AuthenticationKey addKey( AuthenticationKey key )
112     {
113         keys.put( key.getKey(), key );
114         return key;
115     }
116
117     public void eraseDatabase()
118     {
119         keys.clear();
120     }
121
122     public String getId()
123     {
124         return "Memory Key Manager";
125     }
126 }