Package xmladder

Source Code of xmladder.Data

/*
* This file is part of the QuickServer library
* Copyright (C) 2003-2005 QuickServer.org
*
* Use, modification, copying and distribution of this software is subject to
* the terms and conditions of the GNU Lesser General Public License.
* You should have received a copy of the GNU LGP License along with this
* library; if not, you can download a copy from <http://www.quickserver.org/>.
*
* For questions, suggestions, bug-reports, enhancement-requests etc.
* visit http://www.quickserver.org
*
*/

package xmladder;

import org.apache.commons.digester.*;
import java.util.logging.*;
import java.io.*;


import org.quickserver.net.server.ClientData;
import org.quickserver.util.pool.PoolableObject;
import org.apache.commons.pool.BasePoolableObjectFactory;
import org.apache.commons.pool.PoolableObjectFactory;

import java.net.*;
import java.io.*;
import java.util.logging.*;

public class Data implements ClientData, PoolableObject {
  private static Logger logger = Logger.getLogger(Data.class.getName());

  private StringBuffer xmlDump = new StringBuffer();

  public void addXmlPart(String data) throws Exception {
    xmlDump.append(data);
  }

  public synchronized String getNextXML() {
    int i1 = xmlDump.indexOf("<");
    int i2 = xmlDump.indexOf(">",i1);
    if(i1!=-1 && i2!=-1) {
      String tag = xmlDump.substring(i1+1, i2);
      int j = -1;
      String xmlEndTag = null;
      if(tag.trim().charAt(tag.trim().length()-1)=='/') {
        j = i2;
        xmlEndTag = ">";
      } else {
        xmlEndTag = "</" + tag + ">";
        j = xmlDump.indexOf(xmlEndTag, i2);
      }
      if(j!=-1) {
        String data = xmlDump.substring(i1, j+xmlEndTag.length());
        xmlDump.delete(i1, j+xmlEndTag.length());
        return data;
      }
    }
    return null;
  }

  //-- PoolableObject
  public void clean() {
    xmlDump.setLength(0);
  }

  public boolean isPoolable() {
    return true;
  }

  public PoolableObjectFactory getPoolableObjectFactory() {
    return  new BasePoolableObjectFactory() {
      public Object makeObject() {
        return new Data();
      }
      public void passivateObject(Object obj) {
        Data ed = (Data)obj;
        ed.clean();
      }
      public void destroyObject(Object obj) {
        if(obj==null) return;
        passivateObject(obj);
        obj = null;
      }
      public boolean validateObject(Object obj) {
        if(obj==null)
          return false;
        else
          return true;
      }
    };
  }
}
TOP

Related Classes of xmladder.Data

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.