001/* 002 * Copyright 2011-2013 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 */ 017package com.unboundid.scim.sdk.examples; 018 019import com.unboundid.scim.data.AttributeValueResolver; 020import com.unboundid.scim.data.BaseResource; 021import com.unboundid.scim.data.Entry; 022import com.unboundid.scim.data.Manager; 023import com.unboundid.scim.data.Name; 024import com.unboundid.scim.data.ResourceFactory; 025import com.unboundid.scim.data.UserResource; 026import com.unboundid.scim.schema.ResourceDescriptor; 027import com.unboundid.scim.sdk.SCIMEndpoint; 028import com.unboundid.scim.sdk.SCIMObject; 029import com.unboundid.scim.sdk.SCIMService; 030 031import javax.ws.rs.core.MediaType; 032import java.net.URI; 033import java.util.Collection; 034 035/** 036 * A simple client example. 037 */ 038public class ClientExample { 039 040 /** 041 * A device resource extension. 042 */ 043 public static class DeviceResource extends BaseResource 044 { 045 /** 046 * Create a new empty device resource. 047 * 048 * @param resourceDescriptor The resource descriptor of this resource. 049 */ 050 public DeviceResource(final ResourceDescriptor resourceDescriptor) { 051 super(resourceDescriptor); 052 } 053 054 /** 055 * Create a device resource based on the provided SCIMObject. 056 * 057 * @param resourceDescriptor The resource descriptor of this resource. 058 * @param scimObject The SCIMObject containing all the attributes and 059 * values. 060 */ 061 public DeviceResource(final ResourceDescriptor resourceDescriptor, 062 final SCIMObject scimObject) { 063 super(resourceDescriptor, scimObject); 064 } 065 066 /** 067 * Retrieves the vendor name of this device. 068 * 069 * @return The vendor name of this device. 070 */ 071 public String getVendorName() 072 { 073 return getSingularAttributeValue("urn:com:example:device:1.0", 074 "vendorName", AttributeValueResolver.STRING_RESOLVER); 075 } 076 } 077 078 /** 079 * The resource factory that can be used to create device resource instances. 080 */ 081 public static final ResourceFactory<DeviceResource> DEVICE_RESOURCE_FACTORY = 082 new ResourceFactory<DeviceResource>() { 083 /** 084 * {@inheritDoc} 085 */ 086 public DeviceResource createResource( 087 final ResourceDescriptor resourceDescriptor, 088 final SCIMObject scimObject) { 089 return new DeviceResource(resourceDescriptor, scimObject); 090 } 091 }; 092 093 /** 094 * The main method. 095 * 096 * @param args Parameters for the application. 097 * @throws Exception If an error occurs. 098 */ 099 public static void main(final String[] args) throws Exception 100 { 101 URI uri = URI.create("http://localhost:52959"); 102 SCIMService scimService = new SCIMService(uri, 103 "uid=bjensen,dc=example,dc=com", "password"); 104 scimService.setAcceptType(MediaType.APPLICATION_JSON_TYPE); 105 106 // Core user resource CRUD operation example 107 SCIMEndpoint<UserResource> endpoint = scimService.getUserEndpoint(); 108 109 UserResource user = endpoint.get("uid=bjensen,dc=example,dc=com"); 110 111 Name name = user.getName(); 112 113 Collection<Entry<String>> phoneNumbers = user.getPhoneNumbers(); 114 if(phoneNumbers != null) 115 { 116 for(Entry<String> phoneNumber : phoneNumbers) 117 { 118 System.out.println(phoneNumber); 119 } 120 } 121 122 // Attribute extension example 123 Manager manager = user.getSingularAttributeValue( 124 "urn:scim:schemas:extension:enterprise:1.0", "manager", 125 Manager.MANAGER_RESOLVER); 126 if(manager == null) 127 { 128 manager = new Manager("uid=jsmith,dc=example,dc=com", "Manager John"); 129 } 130 manager.setDisplayName("Best in the world"); 131 user.setSingularAttributeValue("urn:scim:schemas:extension:enterprise:1.0", 132 "manager", Manager.MANAGER_RESOLVER, manager); 133 134 String employeeNumber = 135 user.getSingularAttributeValue( 136 "urn:scim:schemas:extension:enterprise:1.0", "employeeNumber", 137 AttributeValueResolver.STRING_RESOLVER); 138 139 user.setSingularAttributeValue("urn:scim:schemas:extension:enterprise:1.0", 140 "department", AttributeValueResolver.STRING_RESOLVER, "sales"); 141 142 user.setNickName("brad"); 143 144 endpoint.update(user); 145 146 // Resource type extension example 147 ResourceDescriptor deviceDescriptor = 148 scimService.getResourceDescriptor("Device", null); 149 SCIMEndpoint<DeviceResource> deviceEndpoint = 150 scimService.getEndpoint(deviceDescriptor, DEVICE_RESOURCE_FACTORY); 151 } 152}