src/main/java/ognl/OgnlRuntime.java
public static String getChildSource(OgnlContext context, Object target, Node child, boolean forceConversion)
            throws OgnlException
    {
        String pre = (String) context.get("_currentChain");
        if (pre == null)
            pre = "";

        try
        {
            child.getValue(context, target);
        } catch (NullPointerException e)
        {
            // ignore
        } catch (ArithmeticException e)
        {
            context.setCurrentType(int.class);
            return "0";
        } catch (Throwable t)
        {
            throw OgnlOps.castToRuntime(t);
        }

        String source = null;

        try
        {
            source = child.toGetSourceString(context, target);
        }
        catch (Throwable t)
        {
            throw OgnlOps.castToRuntime(t);
        }

        // handle root / method expressions that may not have proper root java source access

        if (!ASTConst.class.isInstance(child)
            && (target == null || context.getRoot() != target))
        {
            source = pre + source;
        }

        if (context.getRoot() != null)
        {
            source = ExpressionCompiler.getRootExpression(child, context.getRoot(), context) + source;
            context.setCurrentAccessor(context.getRoot().getClass());
        }

        if (ASTChain.class.isInstance(child))
        {
            String cast = (String) context.remove(ExpressionCompiler.PRE_CAST);
            if (cast == null)
                cast = "";

            source = cast + source;
        }

        if (source == null || source.trim().length() < 1)
            source = "null";

        return source;
    }
public static String getChildSource(OgnlContext context, Object target, Node child, boolean forceConversion)
            throws OgnlException
    {
        String pre = (String) context.get("_currentChain");
        if (pre == null)
            pre = "";

        try
        {
            child.getValue(context, target);
        } catch (NullPointerException e)
        {
            // ignore
        } catch (ArithmeticException e)
        {
            context.setCurrentType(int.class);
            return "0";
        } catch (Throwable t)
        {
            throw OgnlOps.castToRuntime(t);
        }

        String source = null;

        try
        {
            source = child.toGetSourceString(context, target);
        }
        catch (Throwable t)
        {
            throw OgnlOps.castToRuntime(t);
        }

        // handle root / method expressions that may not have proper root java source access

        if (!ASTConst.class.isInstance(child)
            && (target == null || context.getRoot() != target))
        {
            source = pre + source;
        }

        if (context.getRoot() != null)
        {
            source = ExpressionCompiler.getRootExpression(child, context.getRoot(), context) + source;
            context.setCurrentAccessor(context.getRoot().getClass());
        }

        if (ASTChain.class.isInstance(child))
        {
            String cast = (String) context.remove(ExpressionCompiler.PRE_CAST);
            if (cast == null)
                cast = "";

            source = cast + source;
        }

        if (source == null || source.trim().length() < 1)
            source = "null";

        return source;
    }
public static String getChildSource ( OgnlContext context , Object target , Node child , boolean forceConversion ) throws OgnlException { String pre = ( String ) context . get ( "_currentChain" ) ; if ( pre == null ) pre = "" ; try { child . getValue ( context , target ) ; } catch ( NullPointerException e ) { // ignore } catch ( ArithmeticException e ) { context . setCurrentType ( int . class ) ; return "0" ; } catch ( Throwable t ) { throw OgnlOps . castToRuntime ( t ) ; } String source = null ; try { source = child . toGetSourceString ( context , target ) ; } catch ( Throwable t ) { throw OgnlOps . castToRuntime ( t ) ; } // handle root / method expressions that may not have proper root java source access if ( ! ASTConst . class . isInstance ( child ) && ( target == null || context . getRoot ( ) != target ) ) { source = pre + source ; } if ( context . getRoot ( ) != null ) { source = ExpressionCompiler . getRootExpression ( child , context . getRoot ( ) , context ) + source ; context . setCurrentAccessor ( context . getRoot ( ) . getClass ( ) ) ; } if ( ASTChain . class . isInstance ( child ) ) { String cast = ( String ) context . remove ( ExpressionCompiler . PRE_CAST ) ; if ( cast == null ) cast = "" ; source = cast + source ; } if ( source == null || source . trim ( ) . length ( ) < 1 ) source = "null" ; return source ; }
Attempts to get the java source string represented by the specific child expression
via the {@link JavaSource#toGetSourceString(OgnlContext,Object)} interface method.

@param context         The ognl context to pass to the child.
@param target          The current object target to use.
@param child           The child expression.
@param forceConversion If true, forces {@link OgnlOps#convertValue(Object,Class)} conversions on the objects.
@return The result of calling {@link JavaSource#toGetSourceString(OgnlContext,Object)} plus additional
enclosures of {@link OgnlOps#convertValue(Object,Class,boolean)} for conversions.
@throws OgnlException Mandatory exception throwing catching.. (blehh)
Attempts to get the java source string represented by the specific child expression via the { @link JavaSource#toGetSourceString ( OgnlContext Object ) } interface method .