
package edu.mit.wi.omnigene.omnitide.encoding;

import org.apache.soap.util.xml.*;
import org.apache.soap.util.*;
import org.apache.soap.rpc.SOAPContext;
import org.apache.soap.encoding.soapenc.*;
import java.io.*;
import org.w3c.dom.*;
import java.io.*;
import java.util.*;
import java.text.*;

public class URLSerializer implements Serializer
{
  public URLSerializer()
  {
  }


  public void marshall(String inScopeEncStyle, Class javaType, Object src,
                       Object context, Writer sink, NSStack nsStack,
                       XMLJavaMappingRegistry xjmr, SOAPContext ctx)
                        throws IllegalArgumentException, IOException
  {
    if(!javaType.equals(java.net.URL.class))
    {
      throw new IllegalArgumentException("Can only serialize java.net.URL instances");
    }

    nsStack.pushScope();

    if(src!=null)
    {
      SoapEncUtils.generateStructureHeader(inScopeEncStyle,
                                           javaType,
                                           context,
                                           sink,
                                           nsStack,xjmr);

      java.net.URL url = (java.net.URL)src;
      String urlValue = url.toString();
      sink.write(urlValue);
      sink.write("</" + context + '>');
    }
    else
    {
      SoapEncUtils.generateNullStructure(inScopeEncStyle,
                                           javaType,
                                           context,
                                           sink,
                                           nsStack,xjmr);
    }

    nsStack.popScope();

  }

}
