001 /*
002 * Copyright 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.AttributeDescriptor;
021 import com.unboundid.scim.sdk.InvalidResourceException;
022 import com.unboundid.scim.sdk.SCIMAttribute;
023 import com.unboundid.scim.sdk.SCIMAttributeValue;
024
025 import java.util.ArrayList;
026 import java.util.List;
027
028
029
030 /**
031 * A complex type that specifies XML data format configuration options.
032 */
033 public class XmlDataFormatConfig
034 {
035 private final boolean supported;
036
037
038
039 /**
040 * The <code>AttributeValueResolver</code> that resolves SCIM attribute values
041 * to/from <code>XmlDataFormatConfig</code> instances.
042 */
043 public static final AttributeValueResolver<XmlDataFormatConfig>
044 XML_DATA_FORMAT_CONFIG_RESOLVER =
045 new AttributeValueResolver<XmlDataFormatConfig>()
046 {
047 /**
048 * {@inheritDoc}
049 */
050 @Override
051 public XmlDataFormatConfig toInstance(final SCIMAttributeValue value)
052 {
053 return new XmlDataFormatConfig(
054 value.getSubAttributeValue("supported",
055 BOOLEAN_RESOLVER));
056 }
057
058 /**
059 * {@inheritDoc}
060 */
061 @Override
062 public SCIMAttributeValue fromInstance(
063 final AttributeDescriptor attributeDescriptor,
064 final XmlDataFormatConfig value)
065 throws InvalidResourceException
066 {
067 final List<SCIMAttribute> subAttributes =
068 new ArrayList<SCIMAttribute>(1);
069
070 final AttributeDescriptor supportedDescriptor =
071 attributeDescriptor.getSubAttribute("supported");
072 subAttributes.add(
073 SCIMAttribute.create(
074 supportedDescriptor,
075 BOOLEAN_RESOLVER.fromInstance(supportedDescriptor,
076 value.supported)));
077
078 return SCIMAttributeValue.createComplexValue(subAttributes);
079 }
080 };
081
082
083
084 /**
085 * Create a <code>XmlDataFormatConfig</code> instance.
086 *
087 * @param supported Specifies whether the XML data format is supported.
088 */
089 public XmlDataFormatConfig(final boolean supported)
090 {
091 this.supported = supported;
092 }
093
094
095
096 /**
097 * Indicates whether the XML data format is supported.
098 * @return {@code true} if the XML data format is supported.
099 */
100 public boolean isSupported()
101 {
102 return supported;
103 }
104
105
106
107 @Override
108 public boolean equals(final Object o)
109 {
110 if (this == o)
111 {
112 return true;
113 }
114 if (o == null || getClass() != o.getClass())
115 {
116 return false;
117 }
118
119 final XmlDataFormatConfig that = (XmlDataFormatConfig) o;
120
121 if (supported != that.supported)
122 {
123 return false;
124 }
125
126 return true;
127 }
128
129
130
131 @Override
132 public int hashCode()
133 {
134 return (supported ? 1 : 0);
135 }
136
137
138
139 @Override
140 public String toString()
141 {
142 final StringBuilder sb = new StringBuilder();
143 sb.append("XmlDataFormatConfig");
144 sb.append("{supported=").append(supported);
145 sb.append('}');
146 return sb.toString();
147 }
148 }