public Object getAdaptable()

in src/main/java/org/apache/sling/models/impl/via/BeanPropertyViaProvider.java [42:65]


    public Object getAdaptable(Object original, String value) {
        if (StringUtils.isBlank(value)) {
            return ORIGINAL;
        }

        // support nested values, e.g. requestPathInfo.suffixResource.path
        if (StringUtils.contains(value, '.')) {
            String[] parts = StringUtils.split(value, ".", 2);
            Object adaptable = getAdaptable(original, parts[0]);
            return getAdaptable(adaptable, parts[1]);
        }

        try {
            BeanInfo beanInfo = Introspector.getBeanInfo(original.getClass());
            for (PropertyDescriptor desc : beanInfo.getPropertyDescriptors()) {
                if (desc.getName().equals(value)) {
                    return desc.getReadMethod().invoke(original);
                }
            }
        } catch (Exception e) {
            log.error("Unable to execution projection " + value, e);
        }
        return null;
    }