001/*
002 * The contents of this file are subject to the terms of the Common Development and
003 * Distribution License (the License). You may not use this file except in compliance with the
004 * License.
005 *
006 * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
007 * specific language governing permission and limitations under the License.
008 *
009 * When distributing Covered Software, include this CDDL Header Notice in each file and include
010 * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
011 * Header, with the fields enclosed by brackets [] replaced by your own identifying
012 * information: "Portions Copyright [year] [name of copyright owner]".
013 *
014 * Copyright 2010-2011 ApexIdentity Inc.
015 * Portions Copyright 2011-2014 ForgeRock AS.
016 */
017
018package org.forgerock.openig.resolver;
019
020import java.security.Principal;
021
022import org.forgerock.openig.util.EnumUtil;
023
024/**
025 * Resolves {@link Principal} objects.
026 */
027public class PrincipalResolver implements Resolver {
028
029    private enum Element {
030        name
031    }
032
033    @Override
034    public Class<?> getKey() {
035        return Principal.class;
036    }
037
038    @Override
039    public Object get(Object object, Object element) {
040        if (object instanceof Principal) {
041            Principal principal = (Principal) object;
042            Element e = EnumUtil.valueOf(Element.class, element);
043            if (e != null) {
044                switch (e) {
045                case name:
046                    return principal.getName();
047                }
048            }
049        }
050        return Resolver.UNRESOLVED;
051    }
052
053    @Override
054    public Object put(Object object, Object element, Object value) {
055        // immutable
056        return Resolver.UNRESOLVED;
057    }
058}