ProjectTemplateRoleProvider.java 2.63 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.adobe.cq.projects.api.ProjectMemberRole
 *  com.day.cq.wcm.api.Template
 *  org.apache.felix.scr.annotations.Component
 *  org.apache.felix.scr.annotations.Service
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ValueMap
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 */
package com.adobe.cq.projects.impl.team;

import com.adobe.cq.projects.api.ProjectMemberRole;
import com.adobe.cq.projects.impl.team.GenericRole;
import com.adobe.cq.projects.impl.team.RoleClass;
import com.adobe.cq.projects.impl.team.RoleProvider;
import com.day.cq.wcm.api.Template;
import java.util.HashSet;
import java.util.Set;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Component(immediate=1)
@Service(value={RoleProvider.class})
public class ProjectTemplateRoleProvider
implements RoleProvider {
    private static final Logger log = LoggerFactory.getLogger(ProjectTemplateRoleProvider.class);

    @Override
    public Set<ProjectMemberRole> getRoles(Template template) {
        HashSet<ProjectMemberRole> roles = new HashSet<ProjectMemberRole>();
        if (template == null) {
            return roles;
        }
        Resource templateResource = (Resource)template.adaptTo(Resource.class);
        Resource rolesResource = templateResource.getChild("roles");
        if (rolesResource == null) {
            return roles;
        }
        for (Resource roleResource : rolesResource.getChildren()) {
            RoleClass roleClass;
            ValueMap roleValueMap = (ValueMap)roleResource.adaptTo(ValueMap.class);
            String roleClassString = (String)roleValueMap.get("roleclass", String.class);
            String roleId = (String)roleValueMap.get("roleid", String.class);
            String roleName = (String)roleValueMap.get("jcr:title", String.class);
            String[] defaultMembers = (String[])roleValueMap.get("defaultMembers", String[].class);
            try {
                roleClass = RoleClass.valueOf(roleClassString);
            }
            catch (RuntimeException e) {
                log.warn("Role class {} not among allowed role classes for template {}. Role in template being ignored.", (Object)roleClassString, (Object)template.getPath());
                continue;
            }
            GenericRole role = new GenericRole(roleId, roleName, roleClass, defaultMembers);
            roles.add(role);
        }
        return roles;
    }
}