Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

No qualifying bean of type 'com.atlassian.confluence.user.UserAccessor' available error

Chong Jing Hong
Contributor
June 24, 2021

Hi, I am trying to import the UserAccessor in my servlet class. However, whenever I use the servlet module, this error pops up:

com.atlassian.util.concurrent.LazyReference$InitializationException: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘dso.intern.plugin.BulkUserCreatorToolServlet’: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.atlassian.confluence.user.UserAccessor’ available: expected
at least 1 bean which qualifies as autowire candidate.

Here’s my code:

@Named("BulkUserCreatorToolServlet") 
public class BulkUserCreatorToolServlet extends HttpServlet{
private final UserAccessor userAccessor;
public BulkUserCreatorToolServlet(UserAccessor userAccessor){
this.userAccessor = userAccessor;
}

@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
// Configure a repository (to ensure a secure temp location is used)
ServletContext servletContext = this.getServletConfig().getServletContext();
File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
factory.setRepository(repository);
// Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory);

try{
//Parse the request to get file items List<FileItem> fileItems = upload.parseRequest(request);
// Process the uploaded items Iterator<FileItem> iter = fileItems.iterator();
String contentType = null; while(iter.hasNext()){
FileItem item = iter.next();
if(!item.isFormField()){
String content = item.getString();
StringReader sReader = new StringReader(content);
Iterable<CSVRecord> records = CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(sReader);
(CSVRecord record : records){
String username = record.get("Username"); //UTF-8 BOM
String fullname = record.get("Fullname");
String email = record.get("Email");
String password = record.get("Password");
String groupsToBeAddedInto = record.get("GroupsToBeAddedInto");
DefaultUser defaultUser = new DefaultUser(username, fullname, email);
ConfluenceUser newUser = userAccessor.createUser(defaultUser, Credential.unencrypted(password));
userAccessor.addMembership(UserAccessor.GROUP_CONFLUENCE_USERS, username); } } }

response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter(); out.println("<!DOCTYPE html>");
out.println("<html><head>"); out.println("<meta name=\"decorator\" content=\"atl.admin\" />");
out.println("<title>Response Page</title></head></html>"); }

catch(FileUploadException e){ e.printStackTrace(); }
catch(Exception e){ e.printStackTrace(); } } }

 What did I do wrong? Thank you

1 answer

0 votes
Fabian Lim
Community Champion
December 23, 2021

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events