001/* 002 * Copyright 2011-2016 UnboundID Corp. 003 * 004 * This program is free software; you can redistribute it and/or modify 005 * it under the terms of the GNU General Public License (GPLv2 only) 006 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only) 007 * as published by the Free Software Foundation. 008 * 009 * This program is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU General Public License for more details. 013 * 014 * You should have received a copy of the GNU General Public License 015 * along with this program; if not, see <http://www.gnu.org/licenses>. 016 */ 017 018package com.unboundid.scim.data; 019 020import com.unboundid.scim.schema.ResourceDescriptor; 021import com.unboundid.scim.sdk.InvalidResourceException; 022import com.unboundid.scim.sdk.SCIMConstants; 023import com.unboundid.scim.sdk.SCIMObject; 024 025import java.util.Collection; 026 027/** 028 * This class represents a Group resource. 029 */ 030public class GroupResource extends BaseResource 031{ 032 /** 033 * A <code>ResourceFactory</code> for creating <code>GroupResource</code> 034 * instances. 035 */ 036 public static final ResourceFactory<GroupResource> GROUP_RESOURCE_FACTORY = 037 new ResourceFactory<GroupResource>() { 038 public GroupResource createResource( 039 final ResourceDescriptor resourceDescriptor, 040 final SCIMObject scimObject) { 041 return new GroupResource(resourceDescriptor, scimObject); 042 } 043 }; 044 045 /** 046 * Construct an empty <code>GroupResource</code> with the specified 047 * <code>ResourceDescriptor</code>. 048 * 049 * @param resourceDescriptor The resource descriptor for this SCIM resource. 050 */ 051 public GroupResource(final ResourceDescriptor resourceDescriptor) { 052 super(resourceDescriptor); 053 } 054 055 /** 056 * Construct a <code>GroupResource</code> with the specified 057 * <code>ResourceDescriptor</code> and backed by the given 058 * <code>SCIMObject</code>. 059 * 060 * @param resourceDescriptor The resource descriptor for this SCIM resource. 061 * @param scimObject The <code>SCIMObject</code> containing all the 062 * SCIM attributes and their values. 063 */ 064 public GroupResource(final ResourceDescriptor resourceDescriptor, 065 final SCIMObject scimObject) { 066 super(resourceDescriptor, scimObject); 067 } 068 069 /** 070 * Retrieves the human readable name for the Group. 071 * 072 * @return the human readable name for the Group. 073 */ 074 public String getDisplayName() 075 { 076 return getSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE, 077 "displayName", AttributeValueResolver.STRING_RESOLVER); 078 } 079 080 /** 081 * Sets the human readable name for the Group. 082 * 083 * @param displayName the human readable name for the Group. 084 * @return this resource instance. 085 */ 086 public GroupResource setDisplayName(final String displayName) 087 { 088 try { 089 setSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE, "displayName", 090 AttributeValueResolver.STRING_RESOLVER, displayName); 091 } catch (InvalidResourceException e) { 092 // This should never happen as these are core attributes... 093 throw new RuntimeException(e); 094 } 095 return this; 096 } 097 098 /** 099 * Retrieves the list of member IDs of the Group. 100 * 101 * @return the list of member IDs of the Group. 102 */ 103 public Collection<Entry<String>> getMembers() 104 { 105 return getAttributeValues(SCIMConstants.SCHEMA_URI_CORE, 106 "members", Entry.STRINGS_RESOLVER); 107 } 108 109 /** 110 * Sets the list of member IDs of the Group. 111 * 112 * @param members the list of member IDs of the Group. 113 * @return this resource instance. 114 */ 115 public GroupResource setMembers(final Collection<Entry<String>> members) 116 { 117 try { 118 setAttributeValues(SCIMConstants.SCHEMA_URI_CORE, "members", 119 Entry.STRINGS_RESOLVER, members); 120 } catch (InvalidResourceException e) { 121 // This should never happen as these are core attributes... 122 throw new RuntimeException(e); 123 } 124 return this; 125 } 126}