Ignore:
Timestamp:
2008-08-08T13:23:59+12:00 (16 years 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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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) {
Note: See TracChangeset for help on using the changeset viewer.