public ConfigIndex(Schema schema) { for(AbstractSchemaProperty property : schema.getIndexed()) { String propertyName = property.getName(); Class<?> type = getType(property); if(Number.class.isAssignableFrom(type)) { NumberAttribute attr = new NumberAttribute(propertyName); attributes.put(propertyName, attr); } else if (Collection.class.isAssignableFrom(type)) { MultiObjectAttribute attr = new MultiObjectAttribute(propertyName); attributes.put(propertyName, attr); } else if (Map.class.isAssignableFrom(type)) { MultiObjectAttribute attr = new MultiObjectAttribute(propertyName); attributes.put(propertyName, attr); } else { ObjectAttribute attr = new ObjectAttribute(propertyName); attributes.put(propertyName, attr); } } } private Class<?> getType(final AbstractSchemaProperty property) {
public ConfigIndexFields(Bean bean) { Preconditions.checkNotNull(bean.getSchema(), "Schema must be available on bean."); this.id = bean.getId(); for (AbstractSchemaProperty prop : bean.getSchema().getIndexed()) { Object value = getValuesAsObject(prop, bean); if (value != null) { fields.put(prop.getName(), value); } } }