zweb/src/main/java/org/zkoss/web/util/resource/ServletRequestResolver.java

Summary

Maintainability
A
45 mins
Test Coverage
/* ServletRequestResolver.java

    Purpose:
        
    Description:
        
    History:
        Sun Mar 27 01:58:07 TST 2011, Created by tomyeh

Copyright (C) 2011 Potix Corporation. All Rights Reserved.

*/
package org.zkoss.web.util.resource;

import org.zkoss.web.servlet.xel.RequestContext;
import org.zkoss.web.servlet.xel.RequestContexts;
import org.zkoss.xel.VariableResolver;
import org.zkoss.xel.VariableResolverX;
import org.zkoss.xel.XelException;

/**
 * Used to resolve the variables defined in the request
 * (such as DSP context and ZK's execution).
 * It is designed to work {@link org.zkoss.util.resource.Labels},
 * such that XEL expressions specified in labels could reference
 * to the variables defined in the request.
 *
 * @author tomyeh
 * @since 5.0.7
 */
public class ServletRequestResolver implements VariableResolver, java.io.Serializable {
    public ServletRequestResolver() {
    }

    //VariableResolver//
    public Object resolveVariable(String name) throws XelException {
        final RequestContext jc = RequestContexts.getCurrent();
        if (jc != null) {
            final VariableResolver parent = jc.getVariableResolver();
            if (parent != null)
                return parent instanceof VariableResolverX
                        ? ((VariableResolverX) parent).resolveVariable(null, null, name) : parent.resolveVariable(name);
        }
        return null;
    }
}