001package org.apache.archiva.redback.users.configurable;
002
003/*
004 * Copyright 2001-2007 The Apache Software Foundation.
005 *
006 * Licensed under the Apache License, Version 2.0 (the "License");
007 * you may not use this file except in compliance with the License.
008 * You may obtain a copy of the License at
009 *
010 *      http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019import org.apache.archiva.redback.configuration.UserConfiguration;
020import org.apache.archiva.redback.configuration.UserConfigurationKeys;
021import org.apache.archiva.redback.users.AbstractUserManager;
022import org.apache.archiva.redback.users.User;
023import org.apache.archiva.redback.users.UserManager;
024import org.apache.archiva.redback.users.UserManagerException;
025import org.apache.archiva.redback.users.UserNotFoundException;
026import org.apache.archiva.redback.users.UserQuery;
027import org.springframework.context.ApplicationContext;
028import org.springframework.stereotype.Service;
029
030import javax.annotation.PostConstruct;
031import javax.inject.Inject;
032import javax.inject.Named;
033import java.util.List;
034
035/**
036 * @author  jesse
037 */
038@Service( "userManager#configurable" )
039public class ConfigurableUserManager
040    extends AbstractUserManager
041    implements UserManager
042{
043    @Inject
044    @Named( value = "userConfiguration#default" )
045    private UserConfiguration config;
046
047    @Inject
048    private ApplicationContext applicationContext;
049
050    private UserManager userManagerImpl;
051
052
053    @Override
054    @PostConstruct
055    public void initialize()
056    {
057        String userManagerRole = config.getString( UserConfigurationKeys.USER_MANAGER_IMPL );
058
059        if ( userManagerRole == null )
060        {
061            throw new RuntimeException( "User Manager Configuration Missing: " + UserConfigurationKeys.USER_MANAGER_IMPL
062                                            + " configuration property" );
063        }
064
065        log.info( "use userManager impl with key: '{}'", userManagerRole );
066
067        userManagerImpl = applicationContext.getBean( "userManager#" + userManagerRole, UserManager.class );
068    }
069
070    @Override
071    public User addUser( User user )
072        throws UserManagerException
073    {
074        return userManagerImpl.addUser( user );
075    }
076
077    @Override
078    public void addUserUnchecked( User user )
079        throws UserManagerException
080    {
081        userManagerImpl.addUserUnchecked( user );
082    }
083
084    @Override
085    public User createUser( String username, String fullName, String emailAddress )
086        throws UserManagerException
087    {
088        return userManagerImpl.createUser( username, fullName, emailAddress );
089    }
090
091    @Override
092    public UserQuery createUserQuery()
093    {
094        return userManagerImpl.createUserQuery();
095    }
096
097    @Override
098    public void deleteUser( String username )
099        throws UserNotFoundException, UserManagerException
100    {
101        userManagerImpl.deleteUser( username );
102    }
103
104    @Override
105    public void eraseDatabase()
106    {
107        userManagerImpl.eraseDatabase();
108    }
109
110    @Override
111    public User findUser( String username )
112        throws UserManagerException, UserNotFoundException
113    {
114        return userManagerImpl.findUser( username );
115    }
116
117    @Override
118    public User findUser( String username, boolean useCache )
119        throws UserNotFoundException, UserManagerException
120    {
121        return userManagerImpl.findUser( username, useCache );
122    }
123
124    @Override
125    public User getGuestUser()
126        throws UserNotFoundException, UserManagerException
127    {
128        return userManagerImpl.getGuestUser();
129    }
130
131    @Override
132    public List<? extends User> findUsersByEmailKey( String emailKey, boolean orderAscending )
133        throws UserManagerException
134    {
135        return userManagerImpl.findUsersByEmailKey( emailKey, orderAscending );
136    }
137
138    @Override
139    public List<? extends User> findUsersByFullNameKey( String fullNameKey, boolean orderAscending )
140        throws UserManagerException
141    {
142        return userManagerImpl.findUsersByFullNameKey( fullNameKey, orderAscending );
143    }
144
145    @Override
146    public List<? extends User> findUsersByQuery( UserQuery query )
147        throws UserManagerException
148    {
149        return userManagerImpl.findUsersByQuery( query );
150    }
151
152    @Override
153    public List<? extends User> findUsersByUsernameKey( String usernameKey, boolean orderAscending )
154        throws UserManagerException
155    {
156        return userManagerImpl.findUsersByUsernameKey( usernameKey, orderAscending );
157    }
158
159    @Override
160    public String getId()
161    {
162        return "configurable";
163    }
164
165    @Override
166    public List<? extends User> getUsers()
167        throws UserManagerException
168    {
169        return userManagerImpl.getUsers();
170    }
171
172    @Override
173    public List<? extends User> getUsers( boolean orderAscending )
174        throws UserManagerException
175    {
176        return userManagerImpl.getUsers( orderAscending );
177    }
178
179    @Override
180    public boolean isReadOnly()
181    {
182        return userManagerImpl.isReadOnly();
183    }
184
185    @Override
186    public User updateUser( User user )
187        throws UserNotFoundException, UserManagerException
188    {
189        return updateUser( user, false );
190    }
191
192    @Override
193    public User updateUser( User user, boolean passwordChangeRequired )
194        throws UserNotFoundException, UserManagerException
195    {
196        return userManagerImpl.updateUser( user, passwordChangeRequired );
197    }
198
199    @Override
200    public boolean userExists( String userName )
201        throws UserManagerException
202    {
203        return userManagerImpl.userExists( userName );
204    }
205
206    public void setUserManagerImpl( UserManager userManagerImpl )
207    {
208        this.userManagerImpl = userManagerImpl;
209    }
210
211    @Override
212    public String getDescriptionKey()
213    {
214        return "archiva.redback.usermanager.configurable";
215    }
216}