### XFire Home Bug/Issue Reporting Download FAQ Get Involved License News Stack Comparison Support User's Guide XFire Team ### M5 Javadocs Reports ### M6-SNAPSHOT Javadocs Reports ### Developers Developer Space CVS Building Architecture Interesting Projects Release Process | Sometimes you'll want to read/write your own custom types. This will give you direct access to the xml streams. ## Handling large data Sometimes you'll want to return large amounts of data which you don't want loaded into memory. Here a couple steps to help you get going. 1. Return or receive some kind of class which gives a reference to the data
    public ReferenceToData doSomething(...) {}
2. Create a org.codehaus.xfire.aegis.type.Type for ReferenceToData
    public class ReferenceToDataType extends Type
    {
      public ReferenceToDataType() {
        setTypeClass(ReferenceToData.class);
        setSchemaType(new QName(.. the QName of the type you're returning ..));
      }

      public void writeObject(Object value, XMLStreamWriter writer, MessageContext context)
      {
        ReferenceToData data = (ReferenceToData) value;
        ... do you're writing to the writer
      }

      public Object readObject( MessageReader reader, MessageContext context )
      {
        // If you're reading you can read in a reference to the data
        XMLStreamReader reader = context.getInMessage().getXMLStreamReader();

        ReferenceToData data = read(reader);
        return data;
      }

      public void writeSchema(Element schemaRoot)
      {
        // override this to write out your schema
        // if you have it in DOM form you can convert it to YOM via DOMConverter
      }
    }
3. Register the ReferenceToDataType
    ServiceRegistry serviceRegistry  = ....; // get this from the XFire instance
    Serivce service = serviceRegistry.getService("serviceName");
    TypeMapping tm = AegisTypeBinding.getTypeMapping(service);
    tm.register(new ReferenceToDataType());