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

org.openas2.params.MessageMDNParameters 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.StringTokenizer;

import org.openas2.message.MessageMDN;


public class MessageMDNParameters extends ParameterParser {
	public static final String KEY_MESSAGE = "msg";
	public static final String KEY_SENDER = "sender";
	public static final String KEY_RECEIVER = "receiver";
	public static final String KEY_TEXT = "text";
	public static final String KEY_ATTRIBUTES = "attributes";
	public static final String KEY_HEADERS = "headers";
	private MessageMDN target;

	public MessageMDNParameters(MessageMDN target) {
		super();
		this.target = target;
	}

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

		if (keyParts.countTokens() < 2) {
			throw new InvalidParameterException("Invalid key format", this, "key", key);
		}

		String area = keyParts.nextToken();

		if (area.equals(KEY_MESSAGE)) {
			if (keyParts.countTokens() < 3) {
				throw new InvalidParameterException("Invalid key format", this, "key", key);
			}

			String messageKey = keyParts.nextToken() + "." + keyParts.nextToken();

			if (target.getMessage() == null) {
				throw new InvalidParameterException("MDN has no message", this, "key", key);
			}

			new MessageParameters(target.getMessage()).setParameter(messageKey, value);
		} else {
			String areaID = keyParts.nextToken();

			if (area.equals(KEY_TEXT)) {
				target.setText(value);
			} else if (area.equals(KEY_ATTRIBUTES)) {
				target.setAttribute(areaID, value);
			} else if (area.equals(KEY_HEADERS)) {
				target.setHeader(areaID, value);
			} else {
				throw new InvalidParameterException("Invalid area in key", this, "key", key);
			}
		}
	}

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

		if (keyParts.countTokens() > 2) {
			keyParts.nextToken();

			String msgKey = keyParts.nextToken() + "." + keyParts.nextToken();

			return new MessageParameters(target.getMessage()).getParameter(msgKey);
		}

		if (keyParts.countTokens() < 2) {
			throw new InvalidParameterException("Invalid key format", this, "key", key);
		}

		String area = keyParts.nextToken();
		String areaID = keyParts.nextToken();

		if (area.equals(KEY_SENDER)) {
			return getTarget().getPartnership().getSenderID(areaID);
		} else if (area.equals(KEY_RECEIVER)) {
			return getTarget().getPartnership().getReceiverID(areaID);
		} else if (area.equals(KEY_TEXT)) {
			return target.getText();
		} else if (area.equals(KEY_ATTRIBUTES)) {
			return target.getAttribute(areaID);
		} else if (area.equals(KEY_HEADERS)) {
			return target.getHeader(areaID);
		} else {
			throw new InvalidParameterException("Invalid area in key", this, "key", key);
		}
	}

	public void setTarget(MessageMDN messageMDN) {
		target = messageMDN;
	}

	public MessageMDN getTarget() {
		return target;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy