Added java reflection code for request object handling, needs to be tested

pull/263/merge
Amanda Anganes 12 years ago
parent 677f0f2d4c
commit 86bf51f0a7

@ -17,6 +17,8 @@ package org.mitre.openid.connect.view;
import java.io.IOException;
import java.io.Writer;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.Set;
@ -30,6 +32,7 @@ import org.springframework.stereotype.Component;
import org.springframework.validation.BeanPropertyBindingResult;
import org.springframework.web.servlet.view.AbstractView;
import com.google.common.base.CaseFormat;
import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;
import com.google.gson.Gson;
@ -176,8 +179,32 @@ public class JSONUserInfoView extends AbstractView {
for (JsonElement i : claims) {
String claimName = i.getAsString();
if (!obj.has(claimName)) {
//TODO is there some way to do Java reflection for this?
obj.addProperty(claimName, "value");
String value = "";
//Process claim names to go from "claim_name" to "ClaimName"
String camelClaimName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, claimName);
//Now we have "getClaimName"
String methodName = "get" + camelClaimName;
Method getter = null;
try {
getter = ui.getClass().getMethod(methodName, (Class<?>)null);
value = (String) getter.invoke(ui, (Object[])null);
obj.addProperty(claimName, value);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

Loading…
Cancel
Save