empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/ValueExpressionUnwrapper.java [80:128]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    public ValueExpression unwrap(ValueExpression ve, String exprPrefix)
    {   // now unwrap ValueExpressionImpl
        if (ve!=null && !ve.isLiteralText())
        {   // immediate evaluation?
            String expression = ve.getExpressionString();
            if (expression.startsWith(exprPrefix))
            {   // expected: ve = org.apache.el.ValueExpressionImpl
                ValueExpression veImpl = ve;
                if (veImpl instanceof FacesWrapper<?>)
                    veImpl = ((FacesWrapper<ValueExpression>)veImpl).getWrapped();
                if (veImpl.getClass().getName().equals("org.apache.el.ValueExpressionImpl"))
                {   // get the Node
                    Object node = ClassUtils.invokeSimplePrivateMethod(veImpl, "getNode");
                    if (node!=null)
                    {   // We have a Node
                        // Now get the Image
                        String image = StringUtils.toString(ClassUtils.invokeSimpleMethod(node, "getImage"));
                        if (StringUtils.isNotEmpty(image)) 
                        {   // We have an image
                            // Now find the varMapper
                            VariableMapper varMapper = (VariableMapper)ClassUtils.getPrivateFieldValue(veImpl, "varMapper");
                            if (varMapper!=null)
                            {   // Resolve variable using mapper
                                ve = varMapper.resolveVariable(image);
                                log.debug("EL-Expression \"{}\" has been resolved to variable \"{}\"", expression, (ve!=null ? ve.getExpressionString() : null));
                            } else {
                                // Variable not provided!
                                log.debug("EL-Expression \"{}\" has been resolved to NULL.", expression);
                                ve = null;
                            }
                        } else {
                            // No image: complex expression of unsupported type
                            log.info("EL-Expression \"{}\" has unsupported Node type {}", expression, node.getClass().getName());
                        }
                    } else {
                        // Unexpected: No node available for ValueExpression 
                        log.warn("Unexpected: ValueExpressionImpl has no Node. Expression \"{}\" remains unchanged.");
                    }
                } else {
                    // Unexpected EL implementation: 
                    // Only "org.apache.el.ValueExpressionImpl" is supported! 
                    log.warn("Unexpected ValueExpression-Implementation: {}", ve.getClass().getName());
                    log.warn("ValueExpression unwrapping does not work!");
                }
            }
        }
        // done 
        return ve;
    }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ValueExpressionUnwrapper.java [80:128]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    public ValueExpression unwrap(ValueExpression ve, String exprPrefix)
    {   // now unwrap ValueExpressionImpl
        if (ve!=null && !ve.isLiteralText())
        {   // immediate evaluation?
            String expression = ve.getExpressionString();
            if (expression.startsWith(exprPrefix))
            {   // expected: ve = org.apache.el.ValueExpressionImpl
                ValueExpression veImpl = ve;
                if (veImpl instanceof FacesWrapper<?>)
                    veImpl = ((FacesWrapper<ValueExpression>)veImpl).getWrapped();
                if (veImpl.getClass().getName().equals("org.apache.el.ValueExpressionImpl"))
                {   // get the Node
                    Object node = ClassUtils.invokeSimplePrivateMethod(veImpl, "getNode");
                    if (node!=null)
                    {   // We have a Node
                        // Now get the Image
                        String image = StringUtils.toString(ClassUtils.invokeSimpleMethod(node, "getImage"));
                        if (StringUtils.isNotEmpty(image)) 
                        {   // We have an image
                            // Now find the varMapper
                            VariableMapper varMapper = (VariableMapper)ClassUtils.getPrivateFieldValue(veImpl, "varMapper");
                            if (varMapper!=null)
                            {   // Resolve variable using mapper
                                ve = varMapper.resolveVariable(image);
                                log.debug("EL-Expression \"{}\" has been resolved to variable \"{}\"", expression, (ve!=null ? ve.getExpressionString() : null));
                            } else {
                                // Variable not provided!
                                log.debug("EL-Expression \"{}\" has been resolved to NULL.", expression);
                                ve = null;
                            }
                        } else {
                            // No image: complex expression of unsupported type
                            log.info("EL-Expression \"{}\" has unsupported Node type {}", expression, node.getClass().getName());
                        }
                    } else {
                        // Unexpected: No node available for ValueExpression 
                        log.warn("Unexpected: ValueExpressionImpl has no Node. Expression \"{}\" remains unchanged.");
                    }
                } else {
                    // Unexpected EL implementation: 
                    // Only "org.apache.el.ValueExpressionImpl" is supported! 
                    log.warn("Unexpected ValueExpression-Implementation: {}", ve.getClass().getName());
                    log.warn("ValueExpression unwrapping does not work!");
                }
            }
        }
        // done 
        return ve;
    }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



