001    /*
002     * Copyright 2011-2012 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    
018    package com.unboundid.scim.data;
019    
020    import com.unboundid.scim.schema.ResourceDescriptor;
021    import com.unboundid.scim.sdk.InvalidResourceException;
022    import com.unboundid.scim.sdk.SCIMConstants;
023    import com.unboundid.scim.sdk.SCIMObject;
024    
025    import java.util.Collection;
026    
027    
028    
029    /**
030     * This class represents the SCIM Service Provider Configuration.
031     */
032    public class ServiceProviderConfig extends BaseResource
033    {
034      /**
035       * A <code>ResourceFactory</code> for creating
036       * <code>ServiceProviderConfig</code> instances.
037       */
038      public static final ResourceFactory<ServiceProviderConfig>
039          SERVICE_PROVIDER_CONFIG_RESOURCE_FACTORY =
040          new ResourceFactory<ServiceProviderConfig>() {
041        public ServiceProviderConfig createResource(
042            final ResourceDescriptor resourceDescriptor,
043            final SCIMObject scimObject) {
044          return new ServiceProviderConfig(resourceDescriptor, scimObject);
045        }
046      };
047    
048    
049    
050      /**
051       * Construct an empty <code>ServiceProviderConfig</code> with the specified
052       * <code>ResourceDescriptor</code>.
053       *
054       * @param resourceDescriptor The resource descriptor for this SCIM resource.
055       */
056      public ServiceProviderConfig(final ResourceDescriptor resourceDescriptor) {
057        super(resourceDescriptor);
058      }
059    
060    
061    
062      /**
063       * Construct a <code>ServiceProviderConfig</code> with the specified
064       * <code>ResourceDescriptor</code> and backed by the given
065       * <code>SCIMObject</code>.
066       *
067       * @param resourceDescriptor The resource descriptor for this SCIM resource.
068       * @param scimObject         The <code>SCIMObject</code> containing all the
069       *                           SCIM attributes and their values.
070       */
071      public ServiceProviderConfig(final ResourceDescriptor resourceDescriptor,
072                                   final SCIMObject scimObject) {
073        super(resourceDescriptor, scimObject);
074      }
075    
076    
077    
078      /**
079       * Retrieves the PATCH configuration options.
080       *
081       * @return The PATCH configuration options.
082       */
083      public PatchConfig getPatchConfig()
084      {
085        return getSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
086            "patch", PatchConfig.PATCH_CONFIG_RESOLVER);
087      }
088    
089    
090    
091      /**
092       * Specifies the PATCH configuration options.
093       *
094       * @param patchConfig The PATCH configuration options.
095       * @return this resource instance.
096       */
097      public ServiceProviderConfig setPatchConfig(final PatchConfig patchConfig)
098      {
099        try {
100          setSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
101              "patch", PatchConfig.PATCH_CONFIG_RESOLVER, patchConfig);
102        } catch (InvalidResourceException e) {
103          // This should never happen as these are core attributes...
104          throw new RuntimeException(e);
105        }
106        return this;
107      }
108    
109    
110    
111      /**
112       * Retrieves the BULK configuration options.
113       *
114       * @return The BULK configuration options.
115       */
116      public BulkConfig getBulkConfig()
117      {
118        return getSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
119            "bulk", BulkConfig.BULK_CONFIG_RESOLVER);
120      }
121    
122    
123    
124      /**
125       * Specifies the BULK configuration options.
126       *
127       * @param bulkConfig The BULK configuration options.
128       * @return this resource instance.
129       */
130      public ServiceProviderConfig setBulkConfig(final BulkConfig bulkConfig)
131      {
132        try {
133          setSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
134              "bulk", BulkConfig.BULK_CONFIG_RESOLVER, bulkConfig);
135        } catch (InvalidResourceException e) {
136          // This should never happen as these are core attributes...
137          throw new RuntimeException(e);
138        }
139        return this;
140      }
141    
142    
143    
144      /**
145       * Retrieves the FILTER configuration options.
146       *
147       * @return The FILTER configuration options.
148       */
149      public FilterConfig getFilterConfig()
150      {
151        return getSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
152            "filter", FilterConfig.FILTER_CONFIG_RESOLVER);
153      }
154    
155    
156    
157      /**
158       * Specifies the FILTER configuration options.
159       *
160       * @param filterConfig The FILTER configuration options.
161       * @return this resource instance.
162       */
163      public ServiceProviderConfig setFilterConfig(final FilterConfig filterConfig)
164      {
165        try {
166          setSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
167              "filter", FilterConfig.FILTER_CONFIG_RESOLVER, filterConfig);
168        } catch (InvalidResourceException e) {
169          // This should never happen as these are core attributes...
170          throw new RuntimeException(e);
171        }
172        return this;
173      }
174    
175    
176    
177      /**
178       * Retrieves the Change Password configuration options.
179       *
180       * @return The Change Password configuration options.
181       */
182      public ChangePasswordConfig getChangePasswordConfig()
183      {
184        return getSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
185            "changePassword", ChangePasswordConfig.CHANGE_PASSWORD_CONFIG_RESOLVER);
186      }
187    
188    
189    
190      /**
191       * Specifies the Change Password configuration options.
192       *
193       * @param changePasswordConfig The Change Password configuration options.
194       * @return this resource instance.
195       */
196      public ServiceProviderConfig setChangePasswordConfig(
197          final ChangePasswordConfig changePasswordConfig)
198      {
199        try {
200          setSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
201              "changePassword",
202              ChangePasswordConfig.CHANGE_PASSWORD_CONFIG_RESOLVER,
203              changePasswordConfig);
204        } catch (InvalidResourceException e) {
205          // This should never happen as these are core attributes...
206          throw new RuntimeException(e);
207        }
208        return this;
209      }
210    
211    
212    
213      /**
214       * Retrieves the SORT configuration options.
215       *
216       * @return The SORT configuration options.
217       */
218      public SortConfig getSortConfig()
219      {
220        return getSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
221            "sort", SortConfig.SORT_CONFIG_RESOLVER);
222      }
223    
224    
225    
226      /**
227       * Specifies the SORT configuration options.
228       *
229       * @param sortConfig The SORT configuration options.
230       * @return this resource instance.
231       */
232      public ServiceProviderConfig setSortConfig(final SortConfig sortConfig)
233      {
234        try {
235          setSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
236              "sort", SortConfig.SORT_CONFIG_RESOLVER, sortConfig);
237        } catch (InvalidResourceException e) {
238          // This should never happen as these are core attributes...
239          throw new RuntimeException(e);
240        }
241        return this;
242      }
243    
244    
245    
246      /**
247       * Retrieves the ETag configuration options.
248       *
249       * @return The ETag configuration options.
250       */
251      public ETagConfig getETagConfig()
252      {
253        return getSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
254            "etag", ETagConfig.ETAG_CONFIG_RESOLVER);
255      }
256    
257    
258    
259      /**
260       * Specifies the ETag configuration options.
261       *
262       * @param etagConfig The ETag configuration options.
263       * @return this resource instance.
264       */
265      public ServiceProviderConfig setETagConfig(final ETagConfig etagConfig)
266      {
267        try {
268          setSingularAttributeValue(SCIMConstants.SCHEMA_URI_CORE,
269              "etag", ETagConfig.ETAG_CONFIG_RESOLVER, etagConfig);
270        } catch (InvalidResourceException e) {
271          // This should never happen as these are core attributes...
272          throw new RuntimeException(e);
273        }
274        return this;
275      }
276    
277    
278    
279      /**
280       * Retrieves the supported Authentication Schemes.
281       *
282       * @return The supported Authentication Schemes.
283       */
284      public Collection<AuthenticationScheme> getAuthenticationSchemes()
285      {
286        return getAttributeValues(
287            SCIMConstants.SCHEMA_URI_CORE,
288            "authenticationSchemes",
289            AuthenticationScheme.AUTHENTICATION_SCHEME_RESOLVER);
290      }
291    
292    
293    
294      /**
295       * Sets the supported Authentication Schemes.
296       *
297       * @param authenticationSchemes The supported Authentication Schemes.
298       * @return this resource instance.
299       */
300      public ServiceProviderConfig setAuthenticationSchemes(
301          final Collection<AuthenticationScheme> authenticationSchemes)
302      {
303        try {
304          setAttributeValues(SCIMConstants.SCHEMA_URI_CORE,
305                             "authenticationSchemes",
306                             AuthenticationScheme.AUTHENTICATION_SCHEME_RESOLVER,
307                             authenticationSchemes);
308        } catch (InvalidResourceException e) {
309          // This should never happen as these are core attributes...
310          throw new RuntimeException(e);
311        }
312        return this;
313      }
314    
315    
316    
317      /**
318       * Retrieves the XML data format configuration options.
319       *
320       * @return The XML data format configuration options.
321       */
322      public XmlDataFormatConfig getXmlDataFormatConfig()
323      {
324        return getSingularAttributeValue(
325            SCIMConstants.SCHEMA_URI_CORE,
326            "xmlDataFormat",
327            XmlDataFormatConfig.XML_DATA_FORMAT_CONFIG_RESOLVER);
328      }
329    
330    
331    
332      /**
333       * Specifies the XML data format configuration options.
334       *
335       * @param xmlDataFormatConfig The XML data format configuration options.
336       * @return this resource instance.
337       */
338      public ServiceProviderConfig setXmlDataFormatConfig(
339          final XmlDataFormatConfig xmlDataFormatConfig)
340      {
341        try {
342          setSingularAttributeValue(
343              SCIMConstants.SCHEMA_URI_CORE,
344              "xmlDataFormat",
345              XmlDataFormatConfig.XML_DATA_FORMAT_CONFIG_RESOLVER,
346              xmlDataFormatConfig);
347        } catch (InvalidResourceException e) {
348          // This should never happen as these are core attributes...
349          throw new RuntimeException(e);
350        }
351        return this;
352      }
353    }