source: main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/ModuleInterface.java@ 24720

Last change on this file since 24720 was 16688, checked in by davidb, 16 years ago

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.

  • Property svn:keywords set to Author Date Id Revision
File size: 2.1 KB
Line 
1/*
2 * ModuleInterface.java
3 * Copyright (C) 2002 New Zealand Digital Library, http://www.nzdl.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19package org.greenstone.gsdl3.core;
20
21import org.w3c.dom.Node;
22
23/**
24 * interface for all modules in greenstone.
25 *
26 * all components talk via a process method - in its simplest form,
27 * it takes a String of XML, and returns a String of XML
28 *
29 * the more efficient process method uses DOM Nodes instead
30 * of Strings - this avoids parsing the XML at each module
31 *
32 * @author <a href="mailto:[email protected]">Katherine Don</a>
33 * @version $Revision: 16688 $
34 */
35public interface ModuleInterface {
36
37 /**
38 * Process an XML request - as a String
39 *
40 * @param xml_in the request to process
41 * @return the response - contains any error messages
42 * @see java.lang.String
43 */
44 abstract public String process(String xml_in);
45
46 /**
47 * Process an XML request - as a DOM model Node
48 *
49 * @param xml_in the request to process
50 * @return the response - contains any error messages
51 * @see org.w3c.dom.Node
52 */
53 abstract public Node process(Node xml_in);
54
55 /**
56 * Do any clean up necessary for deactivating the module, eg
57 * close any open file handles (gdbm in particular) or windows
58 * holds locks on them.
59 */
60 abstract public void cleanUp();
61}
62
Note: See TracBrowser for help on using the repository browser.