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

org.openas2.params.CompositeParameters Maven / Gradle / Ivy

Go to download

Open source implementation of the AS2 standard for signed encrypted and compressed document transfer

There is a newer version: 2.10.1
Show newest version
package org.openas2.params;


import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class CompositeParameters extends ParameterParser {
    private Map parameterParsers;
    private boolean ignoreMissingParsers;
	private Log logger = LogFactory.getLog(CompositeParameters.class.getSimpleName());

    public CompositeParameters(boolean ignoreMissingParsers) {
        super();
        this.ignoreMissingParsers = ignoreMissingParsers;
    }

    public CompositeParameters(boolean ignoreMissingParsers, Map parameterParsers) {
        super();
        this.ignoreMissingParsers = ignoreMissingParsers;
        getParameterParsers().putAll(parameterParsers);
    }
    
    public CompositeParameters add(String key, ParameterParser param) {
    	getParameterParsers().put(key, param);
    	return this;
    }

    public void setIgnoreMissingParsers(boolean ignoreMissingParsers) {
        this.ignoreMissingParsers = ignoreMissingParsers;
    }

    public boolean getIgnoreMissingParsers() {
        return ignoreMissingParsers;
    }

    public void setParameter(String key, String value)
        throws InvalidParameterException {
        StringTokenizer keyParts = new StringTokenizer(key, ".", false);

        keyParts.nextToken();
        ParameterParser parser = (ParameterParser) getParameterParsers().get(keyParts);

        if (parser != null) {
            if (!keyParts.hasMoreTokens()) {
                throw new InvalidParameterException("Invalid key format", this, key, null);
            }

            StringBuffer keyBuf = new StringBuffer(keyParts.nextToken());

            while (keyParts.hasMoreTokens()) {
                keyBuf.append(".");
                keyBuf.append(keyParts.nextToken());
            }

            parser.setParameter(keyBuf.toString(), value);
        } else if (!getIgnoreMissingParsers()) {
        	if (logger.isDebugEnabled())
        		logger.debug("Failed to find a parser for: " + key + "  ::: Parser list: " + getParameterParsers().keySet().toString());
            throw new InvalidParameterException("Invalid parser identifier", this, key, value);
        }
    }

    public String getParameter(String key) throws InvalidParameterException {
        StringTokenizer keyParts = new StringTokenizer(key, ".", false);

        String parserID = keyParts.nextToken();
        ParameterParser parser = (ParameterParser) getParameterParsers().get(parserID);

        if (parser != null) {
            if (!keyParts.hasMoreTokens()) {
                throw new InvalidParameterException("Invalid key format", this, key, null);
            }

            StringBuffer keyBuf = new StringBuffer(keyParts.nextToken());

            while (keyParts.hasMoreTokens()) {
                keyBuf.append(".");
                keyBuf.append(keyParts.nextToken());
            }

            return parser.getParameter(keyBuf.toString());
        } else if (!getIgnoreMissingParsers()) {
        	if (logger.isDebugEnabled())
        		logger.debug("Failed to find a parser for: " + key + "  ::: Parser list: " + getParameterParsers().keySet().toString());
            throw new InvalidParameterException("Invalid parser identifier", this, key, null);
        } else {
            return "";
        }
    }

    public void setParameterParsers(Map parameterParsers) {
        this.parameterParsers = parameterParsers;
    }

    protected Map getParameterParsers() {
        if (parameterParsers == null) {
            parameterParsers = new HashMap();
        }

        return parameterParsers;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy