greenstone.org greenstone wiki greenstone trac planet greenstone

Changeset 16688

Show
Ignore:
Timestamp:
2008-08-08 13:23:59 (5 months ago)
Author:
davidb
Message:

Changed 'Element process(Element)' in ModuleInterface? to 'Node process(Node)'. After some deliberation is was decided this is a more useful (generic) layer of the DOM to pass information around in. Helps with the DocType? problem when producing XSL Transformed pages, for example. When this was an Element, it would loose track of its DocType?. Supporting method provided in XMLConverter 'Element nodeToElement(Node)' which checks a nodes docType and casts to Element if appropriate, or if a Document, typecasts to that and then extracts the top-level Element. With this fundamental change in ModuleInterface?, around 20 files needed to be updated (Actions, Services, etc) that build on top of 'process()' to reflect this change, and use nodeToElement where necessary.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/Library2.java

    r10296 r16688  
    2424import org.w3c.dom.Document; 
    2525import org.w3c.dom.Element; 
     26import org.w3c.dom.Node; 
    2627 
    2728import java.io.BufferedReader; 
     
    112113        System.out.println("*********************"); 
    113114        System.out.println(converter.getPrettyString(xml_message)); 
    114         Element xml_result = recept.process(xml_message); 
     115        Node xml_result = recept.process(xml_message); 
    115116        return this.converter.getPrettyString(xml_result); 
    116117    } 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/LibraryServlet.java

    r16515 r16688  
    498498    //GSXML.printXMLNode(xml_message); 
    499499     
    500     Node xml_result = this.recept.processToPage (xml_message); 
     500    Node xml_result = this.recept.process(xml_message); 
    501501    encodeURLs (xml_result, response); 
    502502    out.println (this.converter.getPrettyString (xml_result)); 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/OAIServer.java

    r14227 r16688  
    285285    xml_message.appendChild(xml_request); 
    286286          
    287     Element xml_result = this.recept.process (xml_message); 
     287    Node xml_result = this.recept.process (xml_message); 
    288288    if (xml_result == null) { 
    289289      logger.info("xml_result is null"); 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/SOAPServerlocalsite.java

    r10322 r16688  
    2424import org.greenstone.gsdl3.util.GSFile; 
    2525import org.greenstone.gsdl3.util.GSXML; 
     26import org.greenstone.gsdl3.util.XMLConverter; 
    2627import org.w3c.dom.Element; 
     28import org.w3c.dom.Node; 
    2729import java.io.File; 
    2830 
     
    4244    protected String site_name = "localsite"; 
    4345   
     46    protected XMLConverter converter = null; 
     47 
    4448    /** The no-args constructor */ 
    4549    public SOAPServerlocalsite() { 
     50 
     51        converter = new XMLConverter(); 
     52 
    4653        String gsdl3_home = GlobalProperties.getGSDL3Home(); 
    4754        if (gsdl3_home == null || gsdl3_home.equals("")) { 
     
    7481            } 
    7582            Element new_req = GSXML.duplicateWithNewName(req.getOwnerDocument(), req, tag_name, true); 
    76             Element r = mr.process(new_req); 
     83            Node n = mr.process(new_req); 
     84            Element r = converter.nodeToElement(n); 
    7785            // add the namespace back on 
    7886            //Element new_res = r; 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/Action.java

    r13270 r16688  
    6262            return null; 
    6363        } 
    64         Element result = process(message_doc.getDocumentElement()); 
     64        Node result = process(message_doc); 
    6565        return this.converter.getString(result); 
    6666    } 
    6767     
    6868    /** the main process method - must be implemented in subclass */ 
    69     abstract public Element process(Element xml_in); 
     69    abstract public Node process(Node xml_in); 
    7070 
    7171    /** tell the param class what its arguments are  
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/AppletAction.java

    r14226 r16688  
    1919      static Logger logger = Logger.getLogger(org.greenstone.gsdl3.action.AppletAction.class.getName());    
    2020 
    21     public Element process (Element message) { 
     21    public Node process (Node message_node) { 
    2222         
     23        Element message = this.converter.nodeToElement(message_node); 
     24 
    2325        Element request = (Element)GSXML.getChildByTagName(message, GSXML.REQUEST_ELEM); 
    2426        Element result = this.doc.createElement(GSXML.MESSAGE_ELEM); 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/BrowseAction.java

    r13270 r16688  
    2626 
    2727    /** process the request */ 
    28     public Element process (Element message) { 
     28    public Node process (Node message_node) { 
     29 
     30        Element message = this.converter.nodeToElement(message_node); 
    2931 
    3032        // get the request - assume only one 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/DocumentAction.java

    r14525 r16688  
    6767        return true; 
    6868    } 
    69     public Element process (Element message) 
     69    public Node process (Node message_node) 
    7070    { 
    7171        // for now, no subaction eventually we may want to have subactions such as text assoc or something ? 
    7272         
     73        Element message = this.converter.nodeToElement(message_node); 
     74 
    7375        // the response 
    7476        Element result = this.doc.createElement(GSXML.MESSAGE_ELEM); 
     
    441443                e_doc_list.appendChild(this.doc.importNode(dc_response_doc, true)); 
    442444                 
    443                 Element enrich_response = this.mr.process(enrich_message); 
     445                Node enrich_response = this.mr.process(enrich_message); 
    444446                 
    445447                String [] links = {GSXML.RESPONSE_ELEM, GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER, GSXML.DOC_NODE_ELEM, GSXML.NODE_CONTENT_ELEM}; 
     
    554556            } 
    555557            if (service_found) { 
    556                 Element enrich_response = this.mr.process(enrich_message); 
    557  
     558                Element enrich_response = (Element)this.mr.process(enrich_message); 
     559                 
    558560                NodeList e_responses = enrich_response.getElementsByTagName(GSXML.RESPONSE_ELEM); 
    559561                Element service_list = this.doc.createElement(GSXML.SERVICE_ELEM + GSXML.LIST_MODIFIER); 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/GS2BrowseAction.java

    r13568 r16688  
    2424 
    2525    /** process the request */ 
    26     public Element process (Element message) { 
     26    public Node process (Node message_node) { 
     27 
     28        Element message = this.converter.nodeToElement(message_node); 
    2729 
    2830        // get the request - assume only one 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/GeneralAction.java

    r14421 r16688  
    1111     
    1212    /** process a request */ 
    13     public Element process (Element message) { 
     13    public Node process (Node message_node) { 
     14 
     15        Element message = this.converter.nodeToElement(message_node); 
    1416 
    1517        // the result 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/NoCollQueryAction.java

    r14226 r16688  
    2626    /** process - processes a request. 
    2727     */  
    28     public Element process (Element message) { 
     28    public Node process (Node message_node) { 
     29 
     30        Element message = this.converter.nodeToElement(message_node); 
    2931 
    3032        // get the request - assume there is only one 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/PageAction.java

    r14642 r16688  
    2323        public static final String GLI4GS3_PAGE="gli4gs3"; 
    2424 
    25         public Element process (Element message) { 
    26  
    27                 Element request = (Element) GSXML.getChildByTagName(message, GSXML.REQUEST_ELEM); 
    28                 // the page name is the subaction 
    29                 String page_name = request.getAttribute(GSXML.SUBACTION_ATT); 
    30                 if (page_name.equals("")) { // if no page specified, assume home page 
    31                         page_name = HOME_PAGE; 
    32                 } 
    33                 Element result = this.doc.createElement(GSXML.MESSAGE_ELEM); 
    34                 Element response; 
    35                 if (page_name.equals(HOME_PAGE)) { 
    36                         response = homePage(request); 
     25        public Node process (Node message_node) { 
     26 
     27            Element message = this.converter.nodeToElement(message_node); 
     28 
     29            Element request = (Element) GSXML.getChildByTagName(message, GSXML.REQUEST_ELEM); 
     30            // the page name is the subaction 
     31            String page_name = request.getAttribute(GSXML.SUBACTION_ATT); 
     32            if (page_name.equals("")) { // if no page specified, assume home page 
     33                page_name = HOME_PAGE; 
     34            } 
     35            Element result = this.doc.createElement(GSXML.MESSAGE_ELEM); 
     36            Element response; 
     37            if (page_name.equals(HOME_PAGE)) { 
     38                response = homePage(request); 
    3739                //} else if (page_name.equals(ABOUT_PAGE)) { 
    38                } else if (page_name.equals(ABOUT_PAGE) || page_name.equals(PREFS_PAGE)) { 
    39                        response = aboutPage(request); 
     40            } else if (page_name.equals(ABOUT_PAGE) || page_name.equals(PREFS_PAGE)) { 
     41                response = aboutPage(request); 
    4042                //}else if (page_name.equals(PREFS_PAGE)) { 
    41                        //response = prefsPage(request); 
    42                } else if (page_name.equals(GLI4GS3_PAGE)){ 
    43                        response = gli4gs3Page(request); 
    44                }else { // unknown page 
    45  
    46                        logger.error("unknown page specified!"); 
    47                        response =  unknownPage(request); 
    48                
    49  
    50                result.appendChild(this.doc.importNode(response, true)); 
    51                logger.debug("page action result: "+this.converter.getPrettyString(result)); 
    52                return result; 
    53         } 
    54  
     43                //response = prefsPage(request); 
     44            } else if (page_name.equals(GLI4GS3_PAGE)){ 
     45                response = gli4gs3Page(request); 
     46            }else { // unknown page 
     47                 
     48                logger.error("unknown page specified!"); 
     49                response =  unknownPage(request); 
     50           
     51             
     52            result.appendChild(this.doc.importNode(response, true)); 
     53            logger.debug("page action result: "+this.converter.getPrettyString(result)); 
     54            return result; 
     55        } 
     56     
    5557 
    5658        protected Element homePage(Element request) { 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/ProcessAction.java

    r8801 r16688  
    1717     
    1818    /** process a request */ 
    19     public Element process (Element message) { 
     19    public Node process (Node message_node) { 
     20 
     21        Element message = this.converter.nodeToElement(message_node); 
    2022 
    2123        // the result 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/QueryAction.java

    r14947 r16688  
    2727    /** process - processes a request. 
    2828     */  
    29     public Element process (Element message) { 
     29    public Node process (Node message_node) { 
     30 
     31        Element message = this.converter.nodeToElement(message_node); 
    3032 
    3133        // get the request - assume there is only one 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/SystemAction.java

    r13270 r16688  
    2020 
    2121    /** process a request */ 
    22     public Element process (Element message) { 
     22    public Node process (Node message_node) { 
    2323         
     24        Element message = this.converter.nodeToElement(message_node); 
     25 
    2426        // assume only one request 
    2527        Element request = (Element)GSXML.getChildByTagName(message, GSXML.REQUEST_ELEM); 
     
    7779        } 
    7880 
    79         Element response_message = this.mr.process(mr_request_message); 
     81        Node response_message = this.mr.process(mr_request_message); 
    8082         
    8183        result.appendChild(GSXML.duplicateWithNewName(this.doc, (Element)GSXML.getChildByTagName(response_message, GSXML.RESPONSE_ELEM), GSXML.RESPONSE_ELEM, true)); 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/action/XMLDocumentAction.java

    r6300 r16688  
    2424    /** process - processes a request. 
    2525     */  
    26     public Element process (Element message) { 
     26    public Node process (Node message_node) { 
    2727         
     28        Element message = this.converter.nodeToElement(message_node); 
     29 
    2830        // get the request - assume there is only one 
    2931        Element request = (Element)GSXML.getChildByTagName(message, GSXML.REQUEST_ELEM); 
     
    8688        mr_message.appendChild(meta_request); 
    8789         
    88         Element ret_response = this.mr.process(mr_message); 
     90        Element ret_response = (Element)this.mr.process(mr_message); 
    8991        String [] links = {GSXML.RESPONSE_ELEM, GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER, GSXML.DOC_NODE_ELEM}; 
    9092        String path = GSPath.createPath(links); 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/collection/ServiceCluster.java

    r15945 r16688  
    372372 
    373373        Document doc = this.converter.getDOM(in); 
    374         Element e = doc.getDocumentElement(); 
    375          
    376         Element res = process(e); 
     374         
     375        Node res = process(doc); 
    377376        return this.converter.getString(res); 
    378377         
     
    382381     * 
    383382     */ 
    384     public Element process(Element message) { 
     383    public Node process(Node message_node) { 
     384 
     385        Element message = this.converter.nodeToElement(message_node); 
    385386 
    386387        NodeList requests = message.getElementsByTagName(GSXML.REQUEST_ELEM); 
     
    428429                Element single_message = mess_doc.createElement(GSXML.MESSAGE_ELEM); 
    429430                single_message.appendChild(request); 
    430                 Element response_message = ((ModuleInterface)this.service_map.get(service)).process(single_message); 
     431                Node response_message = ((ModuleInterface)this.service_map.get(service)).process(single_message); 
    431432                if (response_message != null) { 
    432433                    Element response = (Element) GSXML.getChildByTagName(response_message, GSXML.RESPONSE_ELEM); 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/comms/Communicator.java

    r9874 r16688  
    6161 
    6262    public String process(String xml_in) { 
    63         Element e = converter_.getDOM(xml_in).getDocumentElement(); 
    64         Node result = process(e); 
     63        Node n = converter_.getDOM(xml_in); 
     64        Node result = process(n); 
    6565        return converter_.getString(result);     
    6666    } 
    6767 
    68     abstract public Element process(Element xml_in); 
     68    abstract public Node process(Node xml_in_node); 
    6969} 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/comms/SOAPCommunicator.java

    r13270 r16688  
    5656    private Call call_ = null; 
    5757 
    58   /** The no-args constructor */ 
    59     public SOAPCommunicator() { 
    60          
     58    protected XMLConverter converter_ = null; 
     59 
     60    /** The no-args constructor */ 
     61    public SOAPCommunicator() {  
     62        converter_ = new XMLConverter(); 
    6163    } 
    6264         
     
    9496    } 
    9597 
    96     public Element process(Element message) { 
     98    public Node process(Node message_node) { 
    9799         
     100        Element message = converter_.nodeToElement(message_node); 
     101 
    98102        NodeList requests = message.getElementsByTagName(GSXML.REQUEST_ELEM); 
    99103        if (requests.getLength()==0) { 
     
    159163        message = "<message><request type=\"describe\" to=\"\" lang=\"en\"/></message>"; 
    160164        Element request_elem = converter.getDOM(message).getDocumentElement(); 
    161         Element response = comm.process(request_elem); 
     165        Node response = comm.process(request_elem); 
    162166         
    163167        logger.error("response was "+converter.getPrettyString(response)); 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/core/DefaultReceptionist.java

    r13959 r16688  
    6868            coll_about_message.appendChild(coll_about_request); 
    6969             
    70             Element coll_about_response_message = this.mr.process(coll_about_message); 
     70            Node coll_about_response_message = this.mr.process(coll_about_message); 
    7171            Element coll_about_response = (Element)GSXML.getChildByTagName(coll_about_response_message, GSXML.RESPONSE_ELEM); 
    7272            if (coll_about_response == null) { 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/core/MessageRouter.java

    r15944 r16688  
    205205    Document doc = this.converter.getDOM(xml_in); 
    206206     
    207     Element result = process(doc.getDocumentElement()); 
     207    Node result = process(doc); 
    208208    return this.converter.getString(result); 
    209209  } 
     
    216216   * @see Element 
    217217   */ 
    218   public Element process(Element message) { 
    219      
     218  public Node process(Node message_node) { 
     219     
     220      Element message = this.converter.nodeToElement(message_node); 
     221 
    220222    // check that its a correct message tag 
    221223    if (!message.getTagName().equals(GSXML.MESSAGE_ELEM)) { 
     
    737739     
    738740    // process the message 
    739     Element info_response = comm.process(info_request); 
     741    Node info_response_node = comm.process(info_request); 
     742    Element info_response = converter.nodeToElement(info_response_node); 
     743 
    740744    if (info_response == null) { 
    741745      return false; 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/core/ModuleInterface.java

    r9874 r16688  
    1919package org.greenstone.gsdl3.core; 
    2020    
    21 import org.w3c.dom.Element;                                                 
     21import org.w3c.dom.Node; 
    2222 
    2323/** 
     
    2727 * it takes a String of XML, and returns a String of XML 
    2828 * 
    29  * the more efficient process method uses DOM Element Nodes instead  
     29 * the more efficient process method uses DOM Nodes instead  
    3030 * of Strings - this avoids parsing the XML at each module 
    3131 * 
     
    4545 
    4646  /** 
    47    * Process an XML request - as a DOM model Element 
     47   * Process an XML request - as a DOM model Node 
    4848   * 
    4949   * @param xml_in the request to process 
    5050   * @return the response - contains any error messages 
    51    * @see org.w3c.dom.Element 
     51   * @see org.w3c.dom.Node 
    5252   */ 
    53     abstract public Element process(Element xml_in); 
     53    abstract public Node process(Node xml_in); 
    5454 
    5555    /**  
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/core/OAIReceptionist.java

    r14211 r16688  
    8383  public String process(String xml_in) { 
    8484     
    85     Element message = this.converter.getDOM(xml_in).getDocumentElement(); 
    86     Element page = process(message); 
     85    Node message_node = this.converter.getDOM(xml_in); 
     86    Node page = process(message_node); 
    8787    return this.converter.getString(page); 
    8888  } 
     89 
    8990  //Compose a message element used to send back to the OAIServer servlet.  
    9091  //This method is only used within OAIReceptionist 
     
    9798   * if something goes wrong, it returns null - 
    9899   */ 
    99   public Element process(Element message) { 
     100  public Node process(Node message_node) { 
    100101    logger.error("OAIReceptionist received request"); 
     102 
     103    Element message = this.converter.nodeToElement(message_node); 
    101104    logger.error(this.converter.getString(message)); 
     105 
    102106    // check that its a correct message tag 
    103107    if (!message.getTagName().equals(GSXML.MESSAGE_ELEM)) { 
     
    145149    request.setAttribute(OAIXML.TYPE, OAIXML.OAI_SET_LIST); 
    146150    request.setAttribute(OAIXML.TO, ""); 
    147     Element msg_elem = mr.process(message); 
    148      
    149     if (msg_elem == null) { 
    150       logger.error("returned msg_elem from mr is null"); 
     151    Node msg_node = mr.process(message); 
     152     
     153    if (msg_node == null) { 
     154      logger.error("returned msg_node from mr is null"); 
    151155      return null; 
    152156    } 
    153     Element resp = (Element)GSXML.getChildByTagName(msg_elem, OAIXML.RESPONSE); 
     157    Element resp = (Element)GSXML.getChildByTagName(msg_node, OAIXML.RESPONSE); 
    154158    Element coll_list = (Element)GSXML.getChildByTagName(resp, OAIXML.COLLECTION_LIST); 
    155159    if (coll_list == null) { 
     
    411415        coll_name = full_name.substring(full_name.indexOf(":") + 1); 
    412416        req.setAttribute(OAIXML.TO, coll_name + "/" + verb); 
    413         Element e = mr.process(msg); 
     417        Node n = mr.process(msg); 
     418        Element e = converter.nodeToElement(n); 
    414419        result = collectAll(result, e, verb, OAIXML.HEADER); 
    415420         
     
    420425    } else { 
    421426      req.setAttribute(OAIXML.TO, coll_name + "/" + verb); 
    422       result = mr.process(msg); 
     427      Node result_node = mr.process(msg); 
     428      result = converter.nodeToElement(result_node); 
    423429    } 
    424430     
     
    606612        req.setAttribute(OAIXML.TO, coll_name + "/" + verb); 
    607613        //logger.info(GSXML.xmlNodeToString(req)); 
    608         Element e = mr.process(msg); 
     614        Node n = mr.process(msg); 
     615        Element e = converter.nodeToElement(n); 
    609616        result = collectAll(result, e, verb, OAIXML.RECORD); 
    610617         
     
    615622    } else { 
    616623      req.setAttribute(OAIXML.TO, coll_name + "/" + verb); 
    617       result = mr.process(msg); 
     624 
     625      Node result_node = mr.process(msg); 
     626      result = converter.nodeToElement(result_node); 
    618627    } 
    619628     
     
    791800 
    792801        //Now send the request to the message router to process 
    793         return mr.process(msg); 
     802        Node result_node = mr.process(msg); 
     803        return converter.nodeToElement(result_node); 
    794804      } 
    795805    } 
     
    955965 
    956966    //Now send the request to the message router to process 
    957     return mr.process(msg); 
     967    Node result_node = mr.process(msg); 
     968    return converter.nodeToElement(result_node); 
    958969  } 
    959970} 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/core/Receptionist.java

    r16648 r16688  
    130130    } 
    131131 
     132 
     133 
    132134    public String process(String xml_in) { 
    133135 
    134         Element message = this.converter.getDOM(xml_in).getDocumentElement(); 
    135         Node page = process(message); 
    136         return this.converter.getString(page); 
    137     } 
    138  
    139     public Element process(Element message) { 
    140         Node node = processToPage(message); 
    141  
    142         short nodeType = node.getNodeType(); 
    143  
    144         if (nodeType == Node.DOCUMENT_NODE) { 
    145                 Document docNode = (Document)node; 
    146                 return docNode.getDocumentElement() ; 
    147         } 
    148         else if (nodeType == Node.ELEMENT_NODE) { 
    149             return (Element)node; 
    150         } 
    151         else { 
    152             System.err.println("Receptionist.process was not returned a document node"); 
    153             return null; 
    154         } 
    155     } 
    156  
    157  
    158  
    159  
    160     /** process using strings - just calls process using Elements */ 
    161     public String processToPage(String xml_in) { 
    162  
    163         Element message = this.converter.getDOM(xml_in).getDocumentElement(); 
    164         Node page = processToPage(message); 
     136        Node message_node = this.converter.getDOM(xml_in); 
     137        Node page = process(message_node); 
    165138        return this.converter.getString(page); 
    166139    } 
     
    170143     * if something goes wrong, it returns null -  
    171144     * TODO:  return a suitable message to the user */ 
    172     public Node processToPage(Element message) { 
     145    public Node process(Node message_node) { 
     146 
     147        Element message = this.converter.nodeToElement(message_node); 
    173148 
    174149        // get the request out of the message - assume that there is only one 
     
    225200        //logger.info(a+" mesa=" + this.converter.getPrettyString(message)); 
    226201        // get the page data from the action 
    227         Element action_response = a.process(message); 
     202        Node action_response = a.process(message); 
    228203 
    229204        boolean response_only=false; 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/service/CrossCollectionSearch.java

    r13978 r16688  
    2323 
    2424import org.w3c.dom.Element; 
     25import org.w3c.dom.Node; 
    2526import org.w3c.dom.NodeList; 
    2627 
     
    176177        query_request.appendChild(new_param_list); 
    177178        new_param_list.appendChild(this.doc.importNode(GSXML.getNamedElement(param_list, GSXML.PARAM_ELEM, GSXML.NAME_ATT, QUERY_PARAM), true)); 
    178         Element query_result = this.router.process(query_message); 
     179        Element query_result = (Element)this.router.process(query_message); 
    179180         
    180181        // gather up the data from each response 
     
    353354        } 
    354355 
    355         Element meta_result = this.router.process(meta_request_message); 
     356        Node meta_result_node = this.router.process(meta_request_message); 
     357        Element meta_result = this.converter.nodeToElement(meta_result_node); 
    356358         
    357359        // now need to put the doc nodes back in the right order 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/service/GS2Construct.java

    r13270 r16688  
    308308        } 
    309309        request.appendChild(command); 
    310         Element response = this.router.process(message); // at the moment, get no info in response so ignore it 
     310        Node response = this.router.process(message); // at the moment, get no info in response so ignore it 
    311311        Text t; 
    312312        String[] args={coll_name}; 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/service/ModuleWrapper.java

    r13270 r16688  
    226226   * @see org.w3c.dom.Element 
    227227   */ 
    228   public Element process(Element xmlIn) { 
     228  public Node process(Node xmlIn) { 
    229229    throw new Error("Not implmented yet. Should be faked by stringizing the node."); 
    230230  } 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/service/ServiceRack.java

    r14528 r16688  
    171171            return null; 
    172172        } 
    173         Element res = process(doc.getDocumentElement()); 
     173        Node res = process(doc); 
    174174        return this.converter.getString(res); 
    175175         
     
    178178    /** process an XML request in DOM form 
    179179     * 
    180      * @param xml_in the Element node containing the request 
     180     * @param message the Node node containing the request 
    181181     * should be <message>  
    182      * @return an Element with the result XML 
    183      * @see Element 
     182     * @return an Node with the result XML 
     183     * @see Node/Element 
    184184     */ 
    185     public Element process(Element message) { 
     185    public Node process(Node message_node) { 
     186 
     187        Element message = this.converter.nodeToElement(message_node); 
    186188 
    187189        NodeList requests = message.getElementsByTagName(GSXML.REQUEST_ELEM); 
  • greenstone3/trunk/src/java/org/greenstone/gsdl3/util/XMLConverter.java

    r16374 r16688  
    2222import org.w3c.dom.Document;  
    2323import org.w3c.dom.DocumentType;  
     24import org.w3c.dom.Element;  
    2425import org.w3c.dom.Node;  
    2526import org.w3c.dom.NodeList; 
     
    8182        this.parser.setEntityResolver(er); 
    8283    } 
    83          
     84 
     85 
     86    public Element nodeToElement(Node node) 
     87    { 
     88        short nodeType = node.getNodeType(); 
     89 
     90        if (nodeType == Node.DOCUMENT_NODE) { 
     91                Document docNode = (Document)node; 
     92                return docNode.getDocumentElement() ; 
     93        } 
     94        else if (nodeType == Node.ELEMENT_NODE) { 
     95            return (Element)node; 
     96        } 
     97        else { 
     98            System.err.println("Expecting Document or Element node type but got " + node.getNodeName()); 
     99            System.err.println("Returning null"); 
     100            return null; 
     101        } 
     102    } 
     103 
    84104    /** returns a DOM Document */ 
    85105    public Document getDOM(String in) {