ProjectRolesAttribute.java 3.68 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.cq.projects.api.ProjectMemberRole
 *  com.day.cq.wcm.api.Template
 *  javax.jcr.Session
 *  javax.servlet.ServletException
 *  org.apache.felix.scr.annotations.Reference
 *  org.apache.felix.scr.annotations.sling.SlingServlet
 *  org.apache.sling.api.SlingHttpServletRequest
 *  org.apache.sling.api.SlingHttpServletResponse
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ResourceResolver
 *  org.apache.sling.api.servlets.SlingAllMethodsServlet
 */
package com.adobe.cq.projects.impl.team;

import com.adobe.cq.projects.api.ProjectMemberRole;
import com.adobe.cq.projects.impl.team.DefaultProjectsRoleProvider;
import com.adobe.cq.projects.impl.team.GenericRole;
import com.adobe.cq.projects.impl.team.TeamException;
import com.adobe.cq.projects.impl.team.TeamManager;
import com.adobe.cq.projects.impl.team.TeamManagerFactory;
import com.day.cq.wcm.api.Template;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import javax.jcr.Session;
import javax.servlet.ServletException;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;

@SlingServlet(methods={"GET"}, resourceTypes={"cq/gui/components/projects/admin/datasource/projectroledefaults"})
public class ProjectRolesAttribute
extends SlingAllMethodsServlet {
    @Reference
    TeamManagerFactory teamManagerFactory;

    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        ResourceResolver resolver = request.getResourceResolver();
        HashMap<GenericRole, String[]> roleDefaults = new HashMap<GenericRole, String[]>();
        Template template = null;
        if (request.getParameter("template") != null) {
            String templatePath = request.getParameter("template");
            Resource templateResource = resolver.getResource(templatePath);
            template = (Template)templateResource.adaptTo(Template.class);
        }
        if (template == null) {
            return;
        }
        try {
            TeamManager teamManager = this.teamManagerFactory.createTeamManager((Session)resolver.adaptTo(Session.class), template);
            Map<String, ProjectMemberRole> teamRoles = teamManager.getRoles();
            if (teamRoles != null) {
                for (ProjectMemberRole role : teamRoles.values()) {
                    GenericRole genericRole;
                    if (!(role instanceof GenericRole) || (genericRole = (GenericRole)role).getDefaultMembers() == null || genericRole.getDefaultMembers().length <= 0) continue;
                    roleDefaults.put(genericRole, genericRole.getDefaultMembers());
                }
            }
            request.setAttribute("roleDefaults", roleDefaults);
            request.setAttribute("ownerRole", (Object)DefaultProjectsRoleProvider.ROLE_OWNER);
        }
        catch (TeamException e) {
            throw new ServletException("Team Exception", (Throwable)e);
        }
    }

    protected void bindTeamManagerFactory(TeamManagerFactory teamManagerFactory) {
        this.teamManagerFactory = teamManagerFactory;
    }

    protected void unbindTeamManagerFactory(TeamManagerFactory teamManagerFactory) {
        if (this.teamManagerFactory == teamManagerFactory) {
            this.teamManagerFactory = null;
        }
    }
}