package jadex.xml.tutorial.jibx.example22;
//import org.jibx.runtime.BindingDirectory;
//import org.jibx.runtime.IBindingFactory;
//import org.jibx.runtime.IMarshallable;
//import org.jibx.runtime.IUnmarshallingContext;
//import org.jibx.runtime.JiBXException;
//import org.jibx.runtime.impl.MarshallingContext;
//import org.jibx.runtime.impl.UnmarshallingContext;
public class BindingSelector
{
// /** URI of version selection attribute. */
// private final String m_attributeUri;
//
// /** Name of version selection attribute. */
// private final String m_attributeName;
//
// /** Array of version names. */
// private final String[] m_versionTexts;
//
// /** Array of bindings corresponding to versions. */
// private final String[] m_versionBindings;
//
// /** Basic unmarshalling context used to determine document version. */
// private final UnmarshallingContext m_context;
//
// /** Stream for marshalling output. */
// private OutputStream m_outputStream;
//
// /** Encoding for output stream. */
// private String m_outputEncoding;
//
// /** Output writer for marshalling. */
// private Writer m_outputWriter;
//
// /** Indentation for marshalling. */
// private int m_outputIndent;
//
// /**
// * Constructor.
// *
// * @param uri version selection attribute URI (<code>null</code> if none)
// * @param name version selection attribute name
// * @param versions array of version texts (first is default)
// * @param bindings array of binding names corresponding to versions
// */
//
// public BindingSelector(String uri, String name, String[] versions,
// String[] bindings) {
// m_attributeUri = uri;
// m_attributeName = name;
// m_versionTexts = versions;
// m_versionBindings = bindings;
// m_context = new UnmarshallingContext();
// m_outputIndent = -1;
// }
//
// /**
// * Get initial unmarshalling context. This gives access to the unmarshalling
// * context used before the specific version is determined. The document
// * information must be set for this context before calling {@link
// * #unmarshalVersioned}.
// *
// * @return initial unmarshalling context
// */
//
// public IUnmarshallingContext getContext() {
// return m_context;
// }
//
// /**
// * Set output stream and encoding.
// *
// * @param outs stream for document data output
// * @param enc document output encoding, or <code>null</code> for default
// */
//
// void setOutput(OutputStream outs, String enc) {
// m_outputStream = outs;
// m_outputEncoding = enc;
// }
//
// /**
// * Set output writer.
// *
// * @param outw writer for document data output
// */
//
// void setOutput(Writer outw) {
// m_outputWriter = outw;
// }
//
// /**
// * Set nesting indent spaces.
// *
// * @param indent number of spaces to indent per level, or disable
// * indentation if negative
// */
//
// void setIndent(int indent) {
// m_outputIndent = indent;
// }
//
// /**
// * Marshal according to supplied version.
// *
// * @param obj root object to be marshalled
// * @param version identifier for version to be used in marshalling
// * @throws JiBXException if error in marshalling
// */
//
// public void marshalVersioned(Object obj, String version)
// throws JiBXException {
//
// // look up version in defined list
// String match = (version == null) ? m_versionTexts[0] : version;
// for (int i = 0; i < m_versionTexts.length; i++) {
// if (match.equals(m_versionTexts[i])) {
//
// // version found, create marshaller for the associated binding
// IBindingFactory fact = BindingDirectory.
// getFactory(m_versionBindings[i], obj.getClass());
// MarshallingContext context =
// (MarshallingContext)fact.createMarshallingContext();
//
// // configure marshaller for writing document
// context.setIndent(m_outputIndent);
// if (m_outputWriter == null) {
// if (m_outputStream == null) {
// throw new JiBXException("Output not configured");
// } else {
// context.setOutput(m_outputStream, m_outputEncoding);
// }
// } else {
// context.setOutput(m_outputWriter);
// }
//
// // output object as document
// context.startDocument(m_outputEncoding, null);
// ((IMarshallable)obj).marshal(context);
// context.endDocument();
// return;
//
// }
// }
//
// // error if unknown version in document
// throw new JiBXException("Unrecognized document version " + version);
// }
//
// /**
// * Unmarshal according to document version.
// *
// * @param clas expected class mapped to root element of document (used only
// * to look up the binding)
// * @return root object unmarshalled from document
// * @throws JiBXException if error in unmarshalling
// */
//
// public Object unmarshalVersioned(Class clas) throws JiBXException {
//
// // get the version attribute value (using first value as default)
// m_context.toStart();
// String version = m_context.attributeText(m_attributeUri,
// m_attributeName, m_versionTexts[0]);
//
// // look up version in defined list
// for (int i = 0; i < m_versionTexts.length; i++) {
// if (version.equals(m_versionTexts[i])) {
//
// // version found, create unmarshaller for the associated binding
// IBindingFactory fact = BindingDirectory.
// getFactory(m_versionBindings[i], clas);
// UnmarshallingContext context =
// (UnmarshallingContext)fact.createUnmarshallingContext();
//
// // return object unmarshalled using binding for document version
// context.setFromContext(m_context);
// return context.unmarshalElement();
//
// }
// }
//
// // error if unknown version in document
// throw new JiBXException("Unrecognized document version " + version);
// }
}