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

org.xins.server.FunctionResult Maven / Gradle / Ivy

The newest version!
/*
 * $Id: FunctionResult.java,v 1.49 2012/03/03 10:41:19 agoubard Exp $
 *
 * See the COPYRIGHT file for redistribution and use restrictions.
 */
package org.xins.server;

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

import org.xins.common.MandatoryArgumentChecker;
import org.xins.common.collections.MapStringUtils;
import org.w3c.dom.Element;
import org.xins.common.xml.DataElementBuilder;

/**
 * Result from a function call. Defines an error code, parameters and output
 * data section. All are optional.
 *
 * @version $Revision: 1.49 $ $Date: 2012/03/03 10:41:19 $
 * @author Anthony Goubard
 * @author Ernst de Haan
 *
 * @since XINS 1.0.0
 *
 * @see FunctionRequest
 */
public class FunctionResult {

   /**
    * The result code. This field is null if no code was
    * returned.
    */
   private final String _code;

   /**
    * The parameters and their values. This field is never null.
    */
   private final Map _parameters;

   /**
    * The data element builder. This field is lazily initialized, it is
    * null if there is no data element.
    */
   private DataElementBuilder _dataElementBuilder;

   /**
    * Creates a new successful FunctionResult instance with no
    * parameters.
    */
   public FunctionResult() {
      this(null, null);
   }

   /**
    * Creates a new FunctionResult instance with no parameters.
    *
    * @param code
    *    the error code, can be null if the result is successful.
    */
   public FunctionResult(String code) {
      this(code, null);
   }

   /**
    * Creates a new FunctionResult instance with a specified set
    * of parameters.
    *
    * @param code
    *    the error code, can be null if the result is successful.
    *
    * @param parameters
    *    the parameters for the result, can be null if there are
    *    no parameters.
    */
   public FunctionResult(String code, Map parameters) {
      _code = code;
      if (parameters == null) {
          _parameters = new HashMap();
      } else {
        _parameters = parameters;
      }
   }

   /**
    * Returns the result code.
    *
    * @return
    *    the result code or null if no code was returned.
    */
   public String getErrorCode() {
      return _code;
   }

   /**
    * Checks that the output parameters are set as specified. If a parameter
    * is missing or if the value for it is invalid, then an
    * InvalidResponseResult is returned. Otherwise the parameters
    * are considered valid, and null is returned.
    *
    * 

The implementation of this method in class {@link FunctionResult} * always returns null. * * @return * an {@link InvalidResponseResult} instance if at least one output * parameter is missing or invalid, or null otherwise. * * @since XINS 2.0. */ public InvalidResponseResult checkOutputParameters() { return null; } /** * Adds an output parameter to the result. The name and the value must * both be specified. * * @param name * the name of the output parameter, not null and not an * empty string. * * @param value * the value of the output parameter, not null and not an * empty string. * * @throws IllegalArgumentException * if name == null || "".equals(name) * || value == null || "".equals(value). */ protected void param(String name, String value) throws IllegalArgumentException { // Check preconditions MandatoryArgumentChecker.check("name", name, "value", value); if (name.length() < 1) { throw new IllegalArgumentException("\"\".equals(name)"); } else if (value.length() < 1) { throw new IllegalArgumentException("\"\".equals(value)"); } // This will erase any value set before with the same name. _parameters.put(name, value); } /** * Gets all parameters. * * @return * a {@link Map} containing all parameters, never null; * the keys will be the names of the parameters * ({@link String} objects, cannot be null), * the values will be the parameter values * ({@link String} objects as well, cannot be null). */ public Map getParameters() { return _parameters; } /** * Gets the value of the specified parameter. * * @param name * the parameter element name, cannot be null. * * @return * string containing the value of the parameter element, * or null if the value is not set. * * @throws IllegalArgumentException * if name == null. */ public String getParameter(String name) throws IllegalArgumentException { // Check preconditions MandatoryArgumentChecker.check("name", name); return _parameters.get(name); } /** * Adds a new Element to the data element. * * @param element * the new element to add to the result, cannot be null. * * @throws IllegalArgumentException * if element == null. * * @since XINS 1.1.0 * @deprecated Use getDataElementBuilder() */ protected void add(Element element) throws IllegalArgumentException { // Check preconditions MandatoryArgumentChecker.check("element", element); Element elementToAdd = (Element) getDataElementBuilder().getDocument().importNode(element, true); _dataElementBuilder.getDataElement().appendChild(elementToAdd); } /** * Adds the DataElementBuilder to create a new the data element. * * @return * a DataElementBuilder to create the data element. * @since XINS 3.0.0 */ protected DataElementBuilder getDataElementBuilder() { // Lazily initialize _dataElementBuilder if (_dataElementBuilder == null) { _dataElementBuilder = new DataElementBuilder(); } return _dataElementBuilder; } /** * Gets the data element from this result. * * @return * the data element of the result, can be null. */ public Element getDataElement() { if (_dataElementBuilder == null) { return null; } else { return _dataElementBuilder.getDataElement(); } } public String toString() { String asString = ""; if (_code != null) { asString += "Error code: " + _code + "; "; } else { asString += "Successful result; "; } asString += MapStringUtils.toString(_parameters, "no parameters") + "; "; if (_dataElementBuilder == null) { asString += "no data section"; } else { asString += _dataElementBuilder.toString(); } return asString; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy