public static Element encode(DParameter dParameter, Element element) throws ParameterException { Element el = null; if (dParameter instanceof DFloat) { el = DFloatCodec.encode((DFloat) dParameter, element); } else if (dParameter instanceof DDate) { el = DDateCodec.encode((DDate) dParameter, element); } else if (dParameter instanceof DString) { el = DStringCodec.encode((DString) dParameter, element); } else if (dParameter instanceof DInteger) { el = DIntegerCodec.encode((DInteger) dParameter, element); } else if (dParameter instanceof DBoolean) { el = DBooleanCodec.encode((DBoolean) dParameter, element); } else if (dParameter instanceof DFloatList) { el = DFloatListCodec.encode((DFloatList) dParameter, element); } else if (dParameter instanceof DDateList) { el = DDateListCodec.encode((DDateList) dParameter, element); } else if (dParameter instanceof DStringList) { el = DStringListCodec.encode((DStringList) dParameter, element); } else if (dParameter instanceof DIntegerList) { el = DIntegerListCodec.encode((DIntegerList) dParameter, element); } else { throw new ParameterException("Unknown parameter type [" + dParameter.getClass() + "]"); } el.setAttribute("Name", dParameter.getName()); // just to go sure enumerations are streamed correctly String type = dParameter.getType(); if (dParameter.getType().equals("Enumeration")) { if (dParameter instanceof DString) { type = "String"; } else { type = "StringList"; } } el.setAttribute("xsi:type", type); element.appendChild(el); return el; }