Package org.jboss.narayana.blacktie.jatmibroker.nbf

Source Code of org.jboss.narayana.blacktie.jatmibroker.nbf.NestedBufferHandlers

/* JBoss, Home of Professional Open Source
* Copyright 2008, Red Hat, Inc., and others contributors as indicated
* by the @authors tag. All rights reserved.
* See the copyright.txt in the distribution for a
* full listing of individual contributors.
* This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions
* of the GNU Lesser General public  License, v. 2.1.
* This program is distributed in the hope that it will be useful, but WITHOUT A
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE.  See the GNU Lesser General public  License for more details.
* You should have received a copy of the GNU Lesser General public  License,
* v.2.1 along with this distribution; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA  02110-1301, USA.
*/
package org.jboss.narayana.blacktie.jatmibroker.nbf;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import org.apache.xerces.xs.ElementPSVI;
import org.apache.xerces.xs.PSVIProvider;
import org.apache.xerces.xs.XSTypeDefinition;


public class NestedBufferHandlers extends DefaultHandler {
  private static final Logger log = LogManager.getLogger(NestedBufferHandlers.class);

  private PSVIProvider provider;
  private String id;
  private String type;
  private String value;
  private String other_value;
  private int index;
  private int curIndex;
  private boolean found;

  public NestedBufferHandlers(PSVIProvider provider) {
    this.provider = provider;
    curIndex = 0;
    value = null;
    found = false;
  }

  public String getType() {
    return type;
  }
 
  public String getValue() {
    if(type.endsWith("_type")) {
      return other_value;
    } else {
      return value;
    }
  }
 
  public void setId(String id) {
    this.id = id;
    this.value = null;
  }
 
  public void setIndex(int index) {
    this.curIndex = 0;
    this.index = index;
  }
 
  public void characters (char ch[], int start, int length)
  throws SAXException {
    if(found) {
      String strValue = new String(ch, start, length);
      if(value == null) {
        value = strValue;
      } else {
        value += strValue;
      }
     
      log.debug("index = " + index + " curIndex = " + curIndex + " value = " + value);
    }
    }
 
  public void startElement(String uri, String localName, String qName, Attributes atts)
  throws SAXException {
    if(qName.equals(id)) {
      if(index == curIndex) {
        found = true;
      }
      curIndex ++;
     
      ElementPSVI psvi = provider.getElementPSVI();
      if(psvi != null) {
        XSTypeDefinition typeInfo = psvi.getTypeDefinition();

        while(typeInfo != null) {
          String typeName = typeInfo.getName();
          if(typeName != null &&(typeName.equals("long") ||
              typeName.equals("string") ||
              typeName.equals("integer") ||
              typeName.equals("float") ||
              typeName.endsWith("_type"))) {

            type = typeName;
            log.debug(qName + " has type of " + type);

            break;
          }
          typeInfo = typeInfo.getBaseType();
        }
      }
    }
  }

  public void endElement(String uri, String localName, String qName
  throws SAXException   {
    if(qName.equals(id)) {
      found = false;
    }
   
    if(found && type != null && type.endsWith("_type") && value != null) {
      String tmp = "<" + qName + ">" + value + "</" + qName + ">";
      if(other_value == null) {
        other_value =tmp;
      } else {
        other_value += tmp;
      }
      value = null;
    }
  }
}
TOP

Related Classes of org.jboss.narayana.blacktie.jatmibroker.nbf.NestedBufferHandlers

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.