All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.feilong.lib.digester3.xmlrules.CallParamRule Maven / Gradle / Ivy

Go to download

feilong is a suite of core and expanded libraries that include utility classes, http, excel,cvs, io classes, and much much more.

There is a newer version: 4.0.8
Show newest version
package com.feilong.lib.digester3.xmlrules;

import org.xml.sax.Attributes;

import com.feilong.lib.digester3.binder.CallParamBuilder;
import com.feilong.lib.digester3.binder.LinkedRuleBuilder;
import com.feilong.lib.digester3.binder.RulesBinder;

/**
 * 
 */
final class CallParamRule extends AbstractXmlRule{

    public CallParamRule(RulesBinder targetRulesBinder, PatternStack patternStack){
        super(targetRulesBinder, patternStack);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    protected void bindRule(LinkedRuleBuilder linkedRuleBuilder,Attributes attributes) throws Exception{
        int paramIndex = Integer.parseInt(attributes.getValue("paramnumber"));
        CallParamBuilder builder = linkedRuleBuilder.callParam().ofIndex(paramIndex);

        String attributeName = attributes.getValue("attrname");
        String fromStack = attributes.getValue("from-stack");
        String stackIndex = attributes.getValue("stack-index");

        if (attributeName == null){
            if (stackIndex != null){
                builder.withStackIndex(Integer.parseInt(stackIndex));
            }else if (fromStack != null){
                builder.fromStack(Boolean.valueOf(fromStack).booleanValue());
            }
        }else{
            if (fromStack == null){
                builder.fromAttribute(attributeName);
            }else{
                // specifying both from-stack and attribute name is not allowed
                throw new RuntimeException("Attributes from-stack and attrname cannot both be present.");
            }
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy