Package anvil.core.xml

Source Code of anvil.core.xml.SimpleHandler

/*
* $Id: SimpleHandler.java,v 1.8 2002/09/16 08:05:03 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.core.xml;

import anvil.Location;
import anvil.core.Any;
import anvil.core.AnyTuple;
import anvil.core.Array;
import anvil.core.runtime.AnyFunction;
import anvil.doc.Doc;
import anvil.script.Context;
import anvil.script.Type;
import anvil.script.Scope;
import anvil.script.Function;
import java.net.URL;
import java.io.IOException;
import anvil.parser.DocumentHandler;
import anvil.parser.Tag;
import anvil.parser.Locator;

/**
* class SAXHandler
*
* @author: Jani Lehtim�ki
*/
public class SimpleHandler implements DocumentHandler, Function
{

  private Context _context;
  private Any _userdata;
  private Locator _locator = null;

  private Any _setDocumentLocator = null;
  private Any _startDocument = null;
  private Any _endDocument = null;
  private Any _handleCharacters = null;
  private Any _handleComment = null;
  private Any _handleTag = null;
  private Any _handleProcessingInstruction = null;

 
  private Any[] _p5 = new Any[5];


  public SimpleHandler(Context context, Any callbacks, Any userdata)
  {
    _context = context;
    _userdata = (userdata != null) ? userdata : Any.NULL;
    _startDocument = getFunction(context, callbacks, "startDocument");
    _endDocument = getFunction(context, callbacks, "endDocument");
    _handleCharacters = getFunction(context, callbacks, "handleCharacters");
    _handleComment = getFunction(context, callbacks, "handleComment");
    _handleTag = getFunction(context, callbacks, "handleTag");
    _handleProcessingInstruction = getFunction(context, callbacks, "handleProcessingInstruction");
    _setDocumentLocator = getFunction(context, callbacks, "setDocumentLocator");
  }


  private Any getFunction(Context context, Any struct, String name)
  {
    Any value = struct.checkAttribute(context, name);
    if (!value.isNull() || !value.isUndefined()) {
      return value;
    }
    return null;
  }


  public void setDocumentLocator(Locator locator)
  {
    _locator = locator;
    if (_setDocumentLocator != null) {
      _setDocumentLocator.execute(_context, new AnyFunction(this), _userdata);
   
  }


  public void startDocument()
  {
    if (_startDocument != null) {
      _startDocument.execute(_context, _userdata);
    }
  }


  public void endDocument()
  {
    if (_endDocument != null) {
      _endDocument.execute(_context, _userdata);
    }
  }


  public void handleTag(Tag tag)
  {
    if (_handleTag != null) {
      _p5[0] = Any.create(tag.getPrefixedName());
      int n = tag.getLength();
      Array list = new Array(n);
      for(int i=0; i<n; i++) {
        String name = tag.getName(i);
        String value = tag.getValue(i);
        list.append(Any.create(name), Any.create(value));
      }
      _p5[1] = list;
      _p5[2] = tag.hasEndSlash() ? Any.TRUE :  Any.FALSE;
      _p5[3] = Any.create(tag.toString());
      _p5[4] = _userdata;
      _handleTag.execute(_context, _p5);
    }
  }
 


  public void handleCharacters(String cdata)
  {
    if (_handleCharacters != null) {
      _handleCharacters.execute(_context, Any.create(cdata), _userdata);
    }   
  }


  public void handleComment(String cdata)
  {
    if (_handleComment != null) {
      _handleComment.execute(_context, Any.create(cdata), _userdata);
    }   
  }

 
  public void handleProcessingInstruction(String data)
  {
    if (_handleProcessingInstruction != null) {
      _handleProcessingInstruction.execute(_context, Any.create(data), _userdata);
    }
  }


  public String getName()
  {
    return "locator";
  }
 
  public String getQualifiedName()
  {
    return getName();
  }
 

  public int getType()
  {
    return FUNCTION;
  }
 

  public Scope getParent()
  {
    return null;
  }


  public Doc getDocument()
  {
    return null;
  }


  public Any execute(Context context, Any self, Any[] parameters)
  {
    return execute(context, parameters);
  }


  public Any execute(Context context, Any[] parameters)
  {
    Location loc = _locator.getLocation();
    URL url = loc.getURL();
    Any[] list = new Any[3];
    list[0] = Any.create(url != null ? new anvil.core.net.AnyURL(loc.getURL()) : Any.NULL);
    list[1] = Any.create(loc.getLine());
    list[2] = Any.create(loc.getColumn());
    return new AnyTuple(list);
  }

  public Any execute(Context context, Any self)
  {
    return execute(context, (Any[]) null);
  }

  public Any execute(Context context, Any self, Any param1)
  {
    return execute(context, (Any[]) null);
  }

  public Any execute(Context context, Any self, Any param1, Any param2)
  {
    return execute(context, (Any[]) null);
  }

  public Any execute(Context context, Any self, Any param1, Any param2, Any param3)
  {
    return execute(context, (Any[]) null);
  }

  public Any execute(Context context, Any self, Any param1, Any param2, Any param3, Any param4)
  {
    return execute(context, (Any[]) null);
  }


  public int getTypeRef(anvil.codec.ConstantPool pool)
  {
    return 0;
  }


}



TOP

Related Classes of anvil.core.xml.SimpleHandler

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.