You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Thiwanka Somasiri (JIRA)" <xe...@xml.apache.org> on 2011/06/14 22:36:47 UTC

[jira] [Commented] (XERCESJ-1429) [GSoC]: Asynchronous LSParser and parseWithContext

    [ https://issues.apache.org/jira/browse/XERCESJ-1429?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13049391#comment-13049391 ] 

Thiwanka Somasiri commented on XERCESJ-1429:
--------------------------------------------

This is a rough sketch for the AsynchronousDOMParserImpl class:



package org.apache.xerces.parsers;

import org.apache.xerces.util.SymbolTable;
import org.apache.xerces.xni.grammars.XMLGrammarPool;
import org.apache.xerces.xni.parser.XMLParserConfiguration;
import org.w3c.dom.events.Event;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.Document;
import org.w3c.dom.events.*;
import org.w3c.dom.ls.LSInput;
import java.util.HashSet;
/**
 * @version $Id: $
 */
public class AsynchronousDOMParserImpl extends DOMParserImpl implements EventTarget{

    //Create the HashSet to hold the event listeners that the users are subscribed to
    private HashSet listenerSet = new HashSet(); // To be added a new data structure to hold the event type
    private DOMParserImpl parser;
    private boolean fBusy = false;
    private LSInput ls;
    
    //Call the super class constructors - there are four constructors in the DOMParserImpl class
    
    public AsynchronousDOMParserImpl(String configuration, String schemaType){
        super(configuration, schemaType);   //Check whether these super() should be removed or not
        parser = new DOMParserImpl(configuration, schemaType);
    }
    
    public AsynchronousDOMParserImpl(XMLParserConfiguration config){
        super(config);
        parser = new DOMParserImpl(config);
    }
    
    public AsynchronousDOMParserImpl(SymbolTable symbolTable){
        super(symbolTable);
        parser = new DOMParserImpl(symbolTable);
    }
    
    public AsynchronousDOMParserImpl(SymbolTable symbolTable, XMLGrammarPool grammarPool){
        super(symbolTable, grammarPool);
        parser = new DOMParserImpl(symbolTable, grammarPool);
    }
    
    public void addEventListener(String type, EventListener listener, boolean useCapture){
        
    }
    
    public void removeEventListener(String type, EventListener listener, boolean useCapture){
        
    }
    
    public boolean dispatchEvent(Event evt){
        return false;//TODO change the return value
    }
    
    public Document parse(LSInput is){
        try{
            //final LSInput input = is;
            ls = is;
            
            //Set the busy flag true before creating the thread - use a setBusyFlag()
            setBusyFlag();
            
            //Instantiate an object from the inner class and start the thread
            AsynchronousDOMParserImpl.TestInner target = new AsynchronousDOMParserImpl.TestInner();
            Thread t = new Thread(target);
            t.start();
                        
        }catch(Exception e){ //TODO apply the proper exception
            e.printStackTrace();
        }finally{
            resetBusyFlag();
        }
        
        return null;
    }
    
    public void setBusyFlag(){
        fBusy = true;
    }    
    
    public void resetBusyFlag(){
        fBusy = false;
    }
    
    public boolean getBusy () {
        return fBusy;
    }
    
    class TestInner implements Runnable{
        public void run(){            
            try{
                parser.parse(ls);
            }catch(Exception e){ //TODO apply the proper exception
                e.printStackTrace();
            }finally{
                resetBusyFlag();
            }
        }
    }
}


> [GSoC]: Asynchronous LSParser and parseWithContext
> --------------------------------------------------
>
>                 Key: XERCESJ-1429
>                 URL: https://issues.apache.org/jira/browse/XERCESJ-1429
>             Project: Xerces2-J
>          Issue Type: New Feature
>          Components: DOM (Level 3 Load & Save)
>    Affects Versions: 2.9.1
>            Reporter: Michael Glavassevich
>              Labels: gsoc2011
>
> The goal of this project is to complete the implementation of the DOM Level 3 LSParser. Though Xerces has a functional LSParser, there are a couple parts of the spec which still need to be implemented. This includes an asynchronous [1] version which returns from the parse method immediately and builds the DOM tree on another thread as well as parseWithContext [2] which allows a document fragment to be parsed and attached to an existing DOM.
> Possible Mentors: Michael Glavassevich
> [1] http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407/load-save.html#LS-LSParser
> [2] http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407/load-save.html#LS-LSParser-parseWithContext

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org