2

I want to get all the properties of the type cm:person and display it in the table. For this I have Java WebScript.

But when I call it I get an exception:

net.sf.acegisecurity.providers.ProviderNotFoundException: No authentication provider for net.sf.acegisecurity.providers.UsernamePasswordAuthenticationToken

In the web script I marked where the exception is thrown:

public class AssignmentsRetriever extends DeclarativeWebScript {
    Logger logger = Logger.getLogger(AssignmentsRetriever.class);

    private WorkflowService workflowService;
    private PersonService personService;
    private NodeService nodeService;

    @Override
    protected Map<String, Object> executeImpl(WebScriptRequest req, Status status) {
        String taskId = req.getParameter("taskId");

        WorkflowTaskQuery tasksQuery = new WorkflowTaskQuery();
        WorkflowTask workflowTask = workflowService.getTaskById("activiti$"+taskId);

        tasksQuery.setProcessId(workflowTask.getPath().getInstance().getId());

        List<WorkflowTask> allWfTasks = 
            workflowService.queryTasks(tasksQuery, true);
        NodeRef personNodeRef;
        Map<QName, Serializable> personProperties;
        Iterator iterator;
        for (WorkflowTask task : allWfTasks) {
            logger.debug("processId == " + 
                task.getPath().getInstance().getId());

            personNodeRef = 
              personService.getPerson("{http://www.alfresco.org/model/content/1.0}owner");

            // Here an exception is thrown
            logger.debug("cm:userName == " + 
                nodeService.getProperties(personNodeRef).get("cm:userName"));

            // Here an exception is thrown
            personProperties = nodeService.getProperties(personNodeRef);
            iterator = personProperties.entrySet().iterator();
            while (iterator.hasNext()) {
                Map.Entry pairs = (Map.Entry)iterator.next();
                logger.debug(pairs.getKey() + " = " + pairs.getValue());
            }
        }

        ...         

        return model;
    }

    public WorkflowService getWorkflowService() {
        return workflowService;
    }

    public void setWorkflowService(WorkflowService workflowService)
    {
        this.workflowService = workflowService;
    }

    public void setNodeService(NodeService nodeService) {
        this.nodeService = nodeService;
    }

    public NodeService getNodeService() {
        return nodeService;
    }

    public void setPersonService(PersonService personService) {
        this.personService = personService;
    }

    public PersonService getPersonService() {
        return personService;
    }
}

What could be the reason?


Strange, I replaced logger.debug(...) to System.out.println(...) and now I can see in the log the following:

alfrescotomcat-stdout.2017-03-15.log:

...
 null
{http://www.alfresco.org/model/content/1.0}email = 
{http://www.alfresco.org/model/content/1.0}homeFolder = workspace://SpacesStore/ac210417-f260-4b24-85ec-7fea912383a4
{http://www.alfresco.org/model/system/1.0}node-uuid = da262d43-d317-463f-b950-c7da54d88e31
{http://www.alfresco.org/model/content/1.0}name = da262d43-d317-463f-b950-c7da54d88e31
{http://www.alfresco.org/model/system/1.0}store-identifier = SpacesStore
{http://www.alfresco.org/model/content/1.0}userName = {http://www.alfresco.org/model/content/1.0}owner
{http://www.alfresco.org/model/content/1.0}homeFolderProvider = userHomesHomeFolderProvider
{http://www.alfresco.org/model/content/1.0}owner = {http://www.alfresco.org/model/content/1.0}owner
{http://www.alfresco.org/model/system/1.0}cascadeCRC = 3614281327
{http://www.alfresco.org/model/content/1.0}sizeQuota = -1
{http://www.alfresco.org/model/system/1.0}cascadeTx = 295
{http://www.alfresco.org/model/content/1.0}lastName = 
{http://www.alfresco.org/model/content/1.0}organizationId = 
{http://www.alfresco.org/model/content/1.0}sizeCurrent = 0
{http://www.alfresco.org/model/system/1.0}store-protocol = workspace
{http://www.alfresco.org/model/system/1.0}node-dbid = 1145
{http://www.alfresco.org/model/system/1.0}locale = 
{http://www.alfresco.org/model/content/1.0}firstName = {http://www.alfresco.org/model/content/1.0}owner
null
{http://www.alfresco.org/model/content/1.0}email = 
{http://www.alfresco.org/model/content/1.0}homeFolder = workspace://SpacesStore/ac210417-f260-4b24-85ec-7fea912383a4
{http://www.alfresco.org/model/system/1.0}node-uuid = da262d43-d317-463f-b950-c7da54d88e31
{http://www.alfresco.org/model/content/1.0}name = da262d43-d317-463f-b950-c7da54d88e31
{http://www.alfresco.org/model/system/1.0}store-identifier = SpacesStore
{http://www.alfresco.org/model/content/1.0}userName = {http://www.alfresco.org/model/content/1.0}owner
{http://www.alfresco.org/model/content/1.0}homeFolderProvider = userHomesHomeFolderProvider
{http://www.alfresco.org/model/content/1.0}owner = {http://www.alfresco.org/model/content/1.0}owner
{http://www.alfresco.org/model/system/1.0}cascadeCRC = 3614281327
{http://www.alfresco.org/model/content/1.0}sizeQuota = -1
{http://www.alfresco.org/model/system/1.0}cascadeTx = 295
{http://www.alfresco.org/model/content/1.0}lastName = 
{http://www.alfresco.org/model/content/1.0}organizationId = 
{http://www.alfresco.org/model/content/1.0}sizeCurrent = 0
{http://www.alfresco.org/model/system/1.0}store-protocol = workspace
{http://www.alfresco.org/model/system/1.0}node-dbid = 1145
{http://www.alfresco.org/model/system/1.0}locale = 
{http://www.alfresco.org/model/content/1.0}firstName = {http://www.alfresco.org/model/content/1.0}owner
...

1 Answers1

0

Today I faced a similar issue while debugging with Visual Studio code and the problem turned to be the debugger itself.

It seems that if you set a breakpoint in a line that calls the nodeService (of other authenticated services I guess) and step over it the problem arises.

This probably has something to do with the fact that probably Alfresco is storing the authenticatino information at a Thread leve, and I guess the instrumentation of the debugger might be running the step in another Thread or something like that.

Luckily it seems that just "running" over the line without stepping there solves the problem.

iblanco
  • 41
  • 1
  • 6