item.add(getActivationControl(component,
(Enum) classMethod.invoke(policy, new Object[]{}) != null,
ConflictResolutionAction.IGNORE, ConflictResolutionAction.IGNORE));
} else if (field.getType().equals(boolean.class) || field.getType().equals(Boolean.class)) {
item.add(new AjaxCheckBoxPanel("check", field.getName(), new PropertyModel(policy,
field.getName())));
item.add(new Label("field", new Model(null)));
} else if (field.getType().equals(List.class) || field.getType().equals(Set.class)) {
classMethod = policy.getClass().getMethod("get" + StringUtils.capitalize(field.getName()),
new Class[]{});
if (field.getSchemaList() != null) {
final List values = schemas.getObject();
if (field.getSchemaList().extended()) {
values.add("id");
values.add("username");
}
component = new AjaxPalettePanel("field", new PropertyModel(policy, field.getName()),
new ListModel<String>(values));
item.add(component);
item.add(getActivationControl(component, !((List) classMethod.invoke(policy,
new Object[]{})).isEmpty(), new ArrayList<String>(), new ArrayList<String>()));
} else {
final FieldPanel panel = new AjaxTextFieldPanel("panel", field.getName(), new Model(null));
panel.setRequired(true);
component = new MultiValueSelectorPanel<String>("field", new PropertyModel(policy, field.
getName()), panel);
item.add(component);
final List<String> reinitializedValue = new ArrayList<String>();
reinitializedValue.add("");
item.add(getActivationControl(component, !((List<String>) classMethod.invoke(policy,
new Object[]{})).isEmpty(), (Serializable) new ArrayList<String>(),
(Serializable) reinitializedValue));
}
} else if (field.getType().equals(int.class) || field.getType().equals(Integer.class)) {
classMethod = policy.getClass().getMethod("get" + StringUtils.capitalize(field.getName()),
new Class[]{});
component = new AjaxTextFieldPanel("field", field.getName(), new PropertyModel(policy, field.
getName()));
item.add(component);
item.add(getActivationControl(component,
(Integer) classMethod.invoke(policy, new Object[]{}) > 0, 0, 0));
} else {
item.add(new AjaxCheckBoxPanel("check", field.getName(), new Model()));
item.add(new Label("field", new Model(null)));
}
} catch (Exception e) {
LOG.error("Error retrieving policy fields", e);
}