137 SchemaResource resource;
138 Class<? extends BaseScimResource> schemaCls=SchemaResource.class;
139 Schema annotation=ScimResourceUtil.getSchemaAnnotation(clazz);
140 if (!clazz.equals(schemaCls) && annotation!=null){
142 Meta meta=
new Meta();
143 meta.setResourceType(ScimResourceUtil.getType(schemaCls));
144 meta.setLocation(
endpointUrl +
"/" + annotation.id());
146 resource=
new SchemaResource();
147 resource.setId(annotation.id());
148 resource.setName(annotation.name());
149 resource.setDescription(annotation.description());
150 resource.setMeta(meta);
152 List<SchemaAttribute> attribs=
new ArrayList<SchemaAttribute>();
154 for (String path : IntrospectUtil.allAttrs.get(clazz)){
155 SchemaAttribute schAttr=
new SchemaAttribute();
156 Field f=IntrospectUtil.findFieldFromPath(clazz, path);
158 Attribute attrAnnot=f.getAnnotation(Attribute.class);
159 if (attrAnnot!=null) {
160 JsonProperty jsonAnnot=f.getAnnotation(JsonProperty.class);
162 schAttr.setName(jsonAnnot==null ? f.getName() : jsonAnnot.value());
163 schAttr.setType(attrAnnot.type().getName());
164 schAttr.setMultiValued(!attrAnnot.multiValueClass().equals(NullType.class) || IntrospectUtil.isCollection(f.getType()));
165 schAttr.setDescription(attrAnnot.description());
166 schAttr.setRequired(attrAnnot.isRequired());
168 schAttr.setCanonicalValues(attrAnnot.canonicalValues().length==0 ? null : Arrays.asList(attrAnnot.canonicalValues()));
169 schAttr.setCaseExact(attrAnnot.isCaseExact());
170 schAttr.setMutability(attrAnnot.mutability().getName());
171 schAttr.setReturned(attrAnnot.returned().getName());
172 schAttr.setUniqueness(attrAnnot.uniqueness().getName());
173 schAttr.setReferenceTypes(attrAnnot.referenceTypes().length==0 ? null : Arrays.asList(attrAnnot.referenceTypes()));
175 if (attrAnnot.type().equals(AttributeDefinition.Type.COMPLEX))
176 schAttr.setSubAttributes(
new ArrayList<SchemaAttribute>());
178 List<SchemaAttribute> list=attribs;
179 String parts[]=path.split(
"\\.");
181 for (
int i=0;i<parts.length-1;i++) {
182 int j = list.indexOf(
new SchemaAttribute(parts[i]));
183 list = list.get(j).getSubAttributes();
189 resource.setAttributes(attribs);
String endpointUrl
Definition: BaseScimWebService.java:69