Eliminated error with sub attributes getting added as a top level schema element
diff --git a/scim-server/scim-server-common/src/main/java/edu/psu/swe/scim/server/provider/ProviderRegistry.java b/scim-server/scim-server-common/src/main/java/edu/psu/swe/scim/server/provider/ProviderRegistry.java
index 3d61aa6..075bbe0 100644
--- a/scim-server/scim-server-common/src/main/java/edu/psu/swe/scim/server/provider/ProviderRegistry.java
+++ b/scim-server/scim-server-common/src/main/java/edu/psu/swe/scim/server/provider/ProviderRegistry.java
@@ -179,35 +179,35 @@
Iterator<Field> iter = fieldList.iterator();
- while(iter.hasNext()) {
- Field f = iter.next();
- Class<?> c = f.getType();
- log.info("Processing class " + c.getName());
-
- if (Collection.class.isAssignableFrom(f.getType())) {
- log.info("We have a collection");
- ParameterizedType stringListType = (ParameterizedType) f.getGenericType();
- Class<?> attributeContainedClass = (Class<?>) stringListType.getActualTypeArguments()[0];
- log.info("processing " + attributeContainedClass.getName());
- if (!attributeContainedClass.isPrimitive()) {
- subFields.addAll(ScimUtils.getFieldsUpTo(attributeContainedClass, Object.class));
- }
- } else if (f.getType().isArray()) {
- log.info("We have an array");
- Class<?> componentType = f.getType().getComponentType();
- log.info("processing " + componentType.getName());
- if (!componentType.isPrimitive()) {
- subFields.addAll(ScimUtils.getFieldsUpTo(componentType, Object.class));
- } else if (!c.isPrimitive()) {
- subFields.addAll(ScimUtils.getFieldsUpTo(c, Object.class));
- }
- }
- }
-
- fieldList.addAll(subFields);
- for (Field field : fieldList) {
- log.info("----> " + field.getName());
- }
+// while(iter.hasNext()) {
+// Field f = iter.next();
+// Class<?> c = f.getType();
+// log.info("Processing class " + c.getName());
+//
+// if (Collection.class.isAssignableFrom(f.getType())) {
+// log.info("We have a collection");
+// ParameterizedType stringListType = (ParameterizedType) f.getGenericType();
+// Class<?> attributeContainedClass = (Class<?>) stringListType.getActualTypeArguments()[0];
+// log.info("processing " + attributeContainedClass.getName());
+// if (!attributeContainedClass.isPrimitive()) {
+// subFields.addAll(ScimUtils.getFieldsUpTo(attributeContainedClass, Object.class));
+// }
+// } else if (f.getType().isArray()) {
+// log.info("We have an array");
+// Class<?> componentType = f.getType().getComponentType();
+// log.info("processing " + componentType.getName());
+// if (!componentType.isPrimitive()) {
+// subFields.addAll(ScimUtils.getFieldsUpTo(componentType, Object.class));
+// } else if (!c.isPrimitive()) {
+// subFields.addAll(ScimUtils.getFieldsUpTo(c, Object.class));
+// }
+// }
+// }
+//
+// fieldList.addAll(subFields);
+// for (Field field : fieldList) {
+// log.info("----> " + field.getName());
+// }
return generateSchema(clazz, fieldList);
}
@@ -228,7 +228,8 @@
log.info("calling set attributes with " + fieldList.size() + " fields");
Set<String> invalidAttributes = new HashSet<>();
- schema.setAttributes(createAttributes(fieldList, invalidAttributes, clazz.getSimpleName()));
+ List<Attribute> createAttributes = createAttributes(fieldList, invalidAttributes, clazz.getSimpleName());
+ schema.setAttributes(createAttributes);
if (!invalidAttributes.isEmpty()) {
StringBuilder sb = new StringBuilder();
@@ -343,7 +344,7 @@
for (Attribute att : la) {
log.info("===========" + att.getName());
}
- attribute.setSubAttributes(createAttributes(fl, invalidAttributes, nameBase + "." + f.getName()), AddAction.APPEND);
+ attribute.setSubAttributes(la, AddAction.APPEND);
//attributeList.addAll(createAttributes(Arrays.asList(fl), invalidAttributes, (nameBase + "." +attributeContainedClass.getName())));
@@ -352,6 +353,7 @@
Class<?> componentType = f.getType().getComponentType();
typeName = componentType.getTypeName();
attribute.setMultiValued(true);
+ // TODO set sub attributes
} else {
typeName = f.getType().toString();
attribute.setMultiValued(false);