Package er.extensions.components.javascript

Source Code of er.extensions.components.javascript.ERXJSRemoteCall

package er.extensions.components.javascript;

import java.util.Enumeration;

import org.apache.log4j.Logger;

import com.webobjects.appserver.WOComponent;
import com.webobjects.appserver.WOContext;
import com.webobjects.foundation.NSArray;
import com.webobjects.foundation.NSDictionary;
import com.webobjects.foundation.NSMutableDictionary;

import er.extensions.foundation.ERXValueUtilities;

/**
* JavaScript remote execution.
* See: http://developer.apple.com/internet/javascript/iframe.html for details
* @binding sample sample binding explanation
*
* @author ak on Fri May 02 2003
*/
public class ERXJSRemoteCall extends WOComponent {
  /**
   * Do I need to update serialVersionUID?
   * See section 5.6 <cite>Type Changes Affecting Serialization</cite> on page 51 of the
   * <a href="http://java.sun.com/j2se/1.4/pdf/serial-spec.pdf">Java Object Serialization Spec</a>
   */
  private static final long serialVersionUID = 1L;

    /** logging support */
    private static final Logger log = Logger.getLogger(ERXJSRemoteCall.class);

    protected NSDictionary _arguments;
    protected NSArray _parameters;
    protected String _url;

    public Object currentValue;
    public Object currentKey;
        
    /**
     * Public constructor
     * @param context the context
     */
    public ERXJSRemoteCall(WOContext context) {
        super(context);
    }

    /** component does not synchronize it's variables */
    @Override
    public boolean synchronizesVariablesWithBindings() { return false; }
   
    @Override
    public String name() { return (String)valueForBinding("name");}
   
    public String frameName() { return name() + "Frame";}
   
    public String actionClass() { return (String)valueForBinding("actionClass");}
   
    public String url() {
        if(_url == null)
            _url = context().directActionURLForActionNamed((actionClass() == null ? "" : actionClass() + "/") + name(), arguments());
        return _url;
    }
   
    public NSDictionary arguments() {
        if(_arguments == null) {
            _arguments = new NSMutableDictionary();
            for(Enumeration e = bindingKeys().objectEnumerator(); e.hasMoreElements();) {
                String s = (String)e.nextElement();
                if(s.indexOf("?") == 0) {
                    Object o = valueForBinding(s);
                    if(o != null)
                        ((NSMutableDictionary)_arguments).setObjectForKey(s, s.substring(1));
                }
            }
        }
        return _arguments;
    }
    public NSArray parameters() {
        if(_parameters == null) {
            _parameters = ERXValueUtilities.arrayValue(valueForBinding("parameters"));
        }
        return _parameters;
    }
   
    @Override
    public void reset() {
        _arguments = null;
        _parameters = null;
        super.reset();
    }
}
TOP

Related Classes of er.extensions.components.javascript.ERXJSRemoteCall

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.